Как исправить несвязанную локальную ошибку на django? - PullRequest
0 голосов
/ 09 мая 2020

Я написал этот код. Каждый раз, когда я назначаю переменную, я получаю «ссылку на локальную переменную 'obj' перед назначением». Не знаю, где я ошибся.

Это мой файл view.py:

def blog_detail(request, slug):
    queryset = Blog.objects.filter(slug=slug)
    if queryset.count() == 1:
        obj = queryset.first()

    templates = "temp_app.html"
    context = {"object": obj}
    return render(request, templates, context)

Вот мой файл models.py

class Blog(models.Model):
    title = models.TextField()
    slug = models.SlugField()
    content = models.TextField(null=True, blank=True)

каждые когда я запускаю сервер, я получаю UnboundLocalError. bt, если я использую «queryset» без присвоения его «obj», я не получаю сообщение об ошибке. Я получаю сообщение об ошибке после назначения "queryset" в "obj". Где я делаю не так?

1 Ответ

0 голосов
/ 09 мая 2020

Это означает, что вы должны добавить переменную obj перед условным условием if. В вашем случае результат переменной queryset не равен 1.

queryset = Blog.objects.filter(slug=slug)
if queryset.count() == 1:
    obj = queryset.first()

to;

obj = None # or whatever your need.
queryset = Blog.objects.filter(slug=slug)
if queryset.count() == 1:
    obj = queryset.first()

or;

queryset = Blog.objects.filter(slug=slug)
if queryset.count() == 1:
    obj = queryset.first()
else:
    obj = None # or whatever your need.
...