分配前在/ detail / 1 /处引用了本地变量'post'的UnboundLocalError

时间:2019-05-15 04:29:47

标签: django

我在Django中遇到以下错误:

UnboundLocalError at /detail/1/
local variable 'post' referenced before assignment
Request Method: GET
Request URL:    http://127.0.0.1:8000/detail/1/
Django Version: 2.2.1

这是产生错误的地方:

from django.shortcuts import render, get_object_or_404
from .models import post

def home (request) :
    context = {
        'titel': 'homepage',
        'posts': post.objects.all()
    }
    return render (request, 'site.html', context) 


def post_detail(request, post_id):
    post = get_object_or_404(post,id=post_id)
    context = {
        'title': post,
        'post': post,
    }

    return render(request, 'details.html', context)

有人可以向我解释此错误以及如何解决吗?

3 个答案:

答案 0 :(得分:1)

您的型号名称是post。并且您将post用作post_detail函数中的变量。这就是为什么您会得到一个错误。将变量名从post更改为另一个变量。我认为它将起作用。

答案 1 :(得分:0)

在post_detail函数内部,您将post用作变量名和模型名。我认为您的型号名称是发布而不是发布。请更改为大写。

我认为这会起作用:

mod

答案 2 :(得分:0)

问题是通过将模型名称从“ post”更改为“ Post”解决的。


class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=300)
    post_date = models.DateTimeField(default=timezone.now)
    post_update = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ('-post_date', )