分配前在/Tag/HTC-Phones/本地变量'tag'处引用了UnboundLocalError-Django [英] UnboundLocalError at /Tag/HTC-Phones/ local variable 'tag' referenced before assignment - Django

查看:45
本文介绍了分配前在/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 Mobiles 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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆