2017-02-16 2 views
1

Ich habe versucht, die Funktion zum Löschen von Kommentaren zu machen, wenn der Benutzer auf die Schaltfläche klickt, löscht er das relevante Element und leitet zur Hauptseite um. Allerdings habe ich diese Fehlermeldung erhalten und ich verbringe Zeit, dies zu beheben. Bitte überprüfen Sie meinen Code und wenn etwas nicht stimmt.Django: Umleiten der Hauptseite nach dem Löschen des Objekts

Fehlermeldung

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'), 

templates

<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

Ich habe Detail def in 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

Können Sie die Ansichtsmethode für Details freigeben? Der Fehler gibt an, dass dort etwas falsch ist – Fallen

+0

@Fallen Ich fügte Detailmethode in views.py hinzu. – camila

+0

Ist das die genaue Einrückung, die Sie in Ihrem 'def detail' verwendet haben? Ihr zweiter 'if'-Block ist leicht fehlausgerichtet. – ooknosi

Antwort

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

Hier wird die context erstellt nur if 'username' in request.sessionTrue ist.

Da Sie eine context Variable sind Rückkehr, müssen Sie es für den Fall schaffen, wenn username auch nicht in request.session ist. Andernfalls wird context nicht angezeigt, wenn der obige Codeblock False zurückgibt und anschließend UnboundLocalError verursacht.

Verwandte Themen