UnboundLocalError: локальная переменная «latest_comments_list», на которую ссылается перед назначением - PullRequest
0 голосов
/ 22 сентября 2019
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import render
from .models import Article
from django.urls import reverse

def index(request):
    latest_articles_list = Article.objects.order_by('-pub_date')[:5]
    return render(request, 'articles/list.html', {'latest_articles_list': **strong text**latest_articles_list})

def detail(request, article_id):
    try:
        a = Article.objects.get( id = article_id )
    except:
        raise Http404("статья не найдена")

        latest_comments_list = a.comment_set.order_by('-id')[:10]
    return render(request, 'articles/detail.html', {'article': a, 'latest_comments_list': latest_comments_list})

def leave_comment(request, article_id):
    try:
        a = Article.objects.get( id = article_id )
    except:
        raise Http404("статья не найдена")

    a.comment_set.create(author_name = request.POST['name'], comment_text = request.POST['text'])

    return HttpResponseRedirect( reverse('articles:detail', args = (a.id,)) )

1 Ответ

0 голосов
/ 22 сентября 2019

Посмотрите на функцию detail.Список последних_комментариев находится в блоке except.Таким образом, если объект Article успешно получен, latest_comments_list не будет установлен.В качестве дополнительного примечания рекомендуется указать, какое исключение вы ловите в except.Попробуйте это:

def detail(request, article_id):
    try:
        a = Article.objects.get( id = article_id )
    except Article.DoesNotExist:
        raise Http404("статья не найдена")

    latest_comments_list = a.comment_set.order_by('-id')[:10]
    return render(request, 'articles/detail.html', {'article': a, 'latest_comments_list': latest_comments_list})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...