2017-02-16 14 views
1

Я пытался удалить функцию комментариев, когда пользователь нажимает кнопку, после чего удаляет соответствующий элемент и перенаправляет на главную страницу. Однако я получил это сообщение об ошибке, и я трачу время, чтобы исправить это. Просмотрите мой код и если что-то не так.Django: Не удалось перенаправить главную страницу после удаления объекта

сообщение об ошибке

UnboundLocalError at /blog/detail/18/ 
local variable 'context' referenced before assignment 

views.py

@login_required 
def delete_comment(request, comment_no): 
    comment = Comment.objects.get(pk=comment_no).delete() 
    return redirect('blog/home.html') 

urls.py

url(r'^delete_comment/(?P<comment_no>[0-9]+)/$', views.delete_comment, name='delete_comment'), 

шаблоны

<form action="{% url 'blog:delete_comment' %}" method="post"> 
     {% csrf_token %} 
     <input type="hidden" name="comment_no" value="{{ comments.comment_no }}" /> 
     <button type="submit">delete</button> 
</form> 

EDIT 01

Я добавил четкости деталей в views.py

@login_required 
def detail(request, article_no): 
    if not request.user.is_authenticated(): 
     return redirect_to_login(next, 'blog/login.html') 
    else: 
     user = request.user 

    if 'username' in request.session: 
     username = request.session['username'] 
     item = get_object_or_404(Article, pk=article_no) 
     item.hit = Article.objects.filter(pk=article_no).update(hit = item.hit+1) 
     no = article_no 
     comments = Comment.objects.filter(article_no=article_no) 
     context = { 
      'item': item, 
      'comments': comments, 
      } 
    return render(request, 'blog/detail.html', context) 
+1

Можете ли вы предоставить общий доступ к методу просмотра? Ошибка указывает, что там что-то не так – Fallen

+0

@Fallen Я добавил метод detail в views.py. – camila

+0

Это точный отступ, который вы использовали в вашей 'def detail'? Второй блок 'if' слегка смещен. – ooknosi

ответ

1
if 'username' in request.session: 
    ... 
    context = { 
     'item': item, 
     'comments': comments, 
     } 

Здесь context только создается if 'username' in request.session является True.

Поскольку вы возвращаете переменную context, вам необходимо создать ее для случая, когда username не находится в request.session. В противном случае context будет отсутствовать, если вышеуказанный кодблокирует False, а затем вызывает это UnboundLocalError.