gpt4 book ai didi

python - 如何在 Django 和 Taggit 中向 URL 添加多个标签

转载 作者:行者123 更新时间:2023-12-05 07:29:35 25 4
gpt4 key购买 nike

我这里有这个模型,我在其中使用 TaggableManager 传递标签。

class Post(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
date_published = models.DateField(auto_now_add=True)
tags = TaggableManager()
slug = models.SlugField(max_length=40, blank=True)

这就是我查看数据的方式:

class TagView(ListView):
model = Post
template_name = 'tagview.html'
paginate_by = 10

def get_queryset(self):
return get_list_or_404(Post, tags__slug = self.kwargs.get('tag'))

def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['tag'] = self.kwargs.get('tag')
return context

这按 1 个标签工作,但我想包含多个标签,我搜索了很多但想不出如何实现它。这是我的 urls.py - path('tag/<slug:tag>/', views.TagView.as_view(), name='tagview'),

我想要类似 /tags/[django][python]/ 的东西等..

最佳答案

实现相同最终结果的另一种方法是使用 query_params 这意味着您将打开 url 以接收任何参数 witch 将遵循基本 url 到此路径,并且您将检查 query_params 是否具有我们正在寻找的“标签”键。

URL 请求看起来像这样:

http://127.0.0.1:8000/blog?tag=python&tag=django

#urls.py

path('', views.TagView.as_view(), name='tagview'),

#views.py

class TagView()
def get(self, request):
posts = Post.objects.all()
is_there_a_tag = request.query_params.get('tag')
if is_there_a_tag is not None:

tag_list = request.query_params.getlist('tag')
matches = self.posts.filter(tags__name__in=tag_list).distinct()

关于python - 如何在 Django 和 Taggit 中向 URL 添加多个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52665078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com