Django出现UnboundLocalError:局部变量'tags'未赋值即引用问题排查
错误核心原因
触发UnboundLocalError的直接原因是:代码行tags = Post.objects.filter(tags)中,右侧的tags是未定义的局部变量。Python执行到这一行时,会优先查找局部作用域内的tags,但此时该变量还未被赋值,因此抛出“局部变量在赋值前被引用”的错误。
代码逻辑问题
你的需求是获取当前文章关联的标签,但代码逻辑存在错误:
- 你已经通过
post = Post.objects.get(slug=slug)拿到了目标文章对象 - 由于Post和Tag是多对多关系,Django会为Post实例自动生成
tags管理器,直接通过post.tags.all()就能获取这篇文章对应的所有标签,无需调用Post.objects.filter()
修正后的views.py代码
def post_details(request,slug): post = Post.objects.get(slug=slug) tags = post.tags.all() # 直接通过文章实例获取关联标签 comment = post.comments.all() return render(request,'mblog/post_detail.html',{'post': post ,'tags': tags,'comment': comment})
内容的提问来源于stack exchange,提问作者Mohamed Stohy
相关产品推荐
相关产品推荐

