我在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)
有人可以向我解释此错误以及如何解决吗?
答案 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', )