繁体   English   中英

如何使用 django-taggit 过滤标签

[英]How can I filter tags with django-taggit

我正在执行以下操作以按标签过滤帖子。 但问题是单击标签按钮时,我看不到任何结果。 下面的代码代表urls.py、model.py、view.py、challengePage.html、tag.html

网址.py:

urlpatterns =[
......
    path('challengePage/', views.ChallengePage, name ='challengePage'),
   path('tag/<str:tag>/', views.tag, name='tag_argument'),   
]

模型.py:

    class Challenge_code(models.Model): #create a table
    auther = models.ForeignKey(User, on_delete = models.CASCADE)
    title = models.CharField(max_length = 200, null = False)
    body =RichTextUploadingField(blank=True, null=True)
   
    image = models.ImageField(null = True,blank=True ,upload_to='attach/')
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)
    tags = TaggableManager()

    def __str__(self):
        return self.title

视图.py:

def ChallengePage(request):
    challenges = Challenge_code.objects.prefetch_related('tags').all().order_by('-created_at')
    tags = Tag.objects.all()
    context = {
        'challenges' : challenges,
        'tags':tags,
    }
    return render(request,'challengePage.html',context)

def tag(request,tag):
    challenges_tag = Challenge_code.objects.filter(tags__name=tag)
    return render(request, 'tag.html',{'tag':tag, 'challenges':challenges_tag})

挑战页面.html:

<div style="text-align: center;">
    {% for tag in tags %}
    <a href="{% url 'tag_argument' tag %}"><button style="text-align: center;"  dir="ltr" class="buttonTag buttonTag2"
    >   {{tag.name}}</button></a>
    {% endfor %}
</div>

标签.html:

<div class="code_body">
    <div class="container_code">
          {% for challenge in challenges_tag %}
        <div class="Box_code">  
            <p class="title_code"><bdi style="  color: #000;">
              {{challenge.title}}
              <br>
              {% for tag in challenge.tags.all %}
                <small>{{tag}}, </small>
                {% endfor %}
            </bdi>
            </p>
            <a href="{% url 'challenge' challenge.id %}"><button class="button1" style="vertical-align:middle"><span>Join</span></button></a>
            <p class="name-user">
              <bdi>
              By: 
               {{challenge.auther.username}} 
              </bdi>
            </p>
        </div>
       {% endfor %} 

我在我当前的项目中使用它,我使用 urls.py

tag/<slug:tag_slug>

在 views.py 中

tag = get_object_or_404(Tag, slug=tag_slug)
query = your_model.filter(tags__in=[tag])

不要忘记将其导入您的 views.py

from taggit.models import Tag

它对我来说工作得很好,改变它以适合你的目的,我准备提供帮助,但首先要遵循这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM