分配前在/Tag/HTC-Phones/本地变量'tag'处引用了UnboundLocalError-Django [英] UnboundLocalError at /Tag/HTC-Phones/ local variable 'tag' referenced before assignment - Django
本文介绍了分配前在/Tag/HTC-Phones/本地变量'tag'处引用了UnboundLocalError-Django的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我遇到以下错误:
UnboundLocalError at /Tag/HTC-Phones/
local variable 'tag' referenced before assignment
/home/pc/Desktop/django_stuff/blog_project/blog_app/views.py in tag_detail, line 86
models.py:
models.py :
class Tag(models.Model):
Tag_Name = models.CharField(max_length=100)
slug = models.SlugField(unique=True,editable=True,max_length=200)
def __str__(self):
return self.Tag_Name
def get_absolute_url(self):
return reverse('tag_detail_url', kwargs={'slug':self.slug})
class Mobile(models.Model):
name = models.CharField(max_length=100,default="")
post_date = models.DateTimeField(auto_now_add=True, null=True, blank=True)
tag = models.ManyToManyField('Tag',blank=True,related_name='posts')
views.py:
from .models import Tag
def tag_detail(request,slug):
tag = Tag.objects.filter(manytomanyfield=tag)
return render(request,'website_primary_html_pages/tag_detail.html',context={'tag':tag})
tag = Tag.objects.filter(manytomanyfield = tag)
如何解决此问题,谢谢
推荐答案
您可以通过以下方式获取给定标签的相关 Mobile
:
You can obtain the related Mobile
s for a given tag with:
from django.shortcuts import get_object_or_404, render
from .models import Tag, Mobile
def tag_detail(request,slug):
tag = get_object_or_404(Tag, slug__iexact=slug)
mobiles = Mobile.objects.filter(tag=tag)
context = {
'tag': tag,
'mobiles': mobiles
}
return render(request, 'website_primary_html_pages/tag_detail.html', context)
在模板中,您可以通过以下方式呈现此信息:
In the template you render this with:
{% for mobile in mobiles %}
<!-- render the mobile -->
{{ mobile.name }}
{% endfor %}
您还可以 paginate [Django-doc] mobiles
对象具有:
You can also paginate [Django-doc] the mobiles
objects with:
from django.core.paginator import Paginator
from django.shortcuts import get_object_or_404, render
from .models import Tag, Mobile
def tag_detail(request,slug):
tag = get_object_or_404(Tag, slug__iexact=slug)
mobiles = Mobile.objects.filter(tag=tag)
paginator = Paginator(mobiles, 25) # ← 25 objects per page
page_obj = paginator.get_page(request.GET.get('page'))
context = {
'tag': tag,
'mobiles': mobiles,
'page_obj': page_obj
}
return render(request, 'website_primary_html_pages/tag_detail.html', context)
然后您遍历 page_obj
:
{% for mobile in page_obj %}
<!-- render the mobile -->
{{ mobile.name }}
{% endfor %}
关于 对 ListView
[Django-doc] 包含有关如何呈现到上一页/下一页的链接的信息.
The section on Paginating a ListView
[Django-doc] contains information on how to render the links to the previous/next page.
这篇关于分配前在/Tag/HTC-Phones/本地变量'tag'处引用了UnboundLocalError-Django的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文