django - Django-taggit,标签蛞蝓没有链接到正确的 ListView
问题描述
我安装了 django-taggit 和 django-taggit-templatetags2 并包含在我需要的所有模型中。在带有模型 Post 的应用名称博客上,标签与下面的代码一样完美。
'''blog/views.py'''
def tutorialpage(request):
tutorial_list = Post.objects.all()
context = {
'tutorial_list': queryset,
}
return render(request, "tutorialpage.html", context)
class TagMixin(object):
def get_context_data(self, **kwargs):
context = super(TagMixin, self).get_context_data(**kwargs)
context['tags'] = Tag.objects.all()
return context
class TagIndexView(TagMixin, ListView):
template_name = 'tutorialpage.html'
model = Post
context_object_name = 'tutorial_list'
def get_queryset(self):
return Post.objects.filter(tags__slug=self.kwargs.get('slug'))
'''blog/urls.py'''
path('tag/<slug:slug>/', views.TagIndexView.as_view(), name='tagged'),
'''tutorialpage.html'''
{% load taggit_templatetags2_tags %}
{% for tutorial in tutorial_list %}
<a href="/tutorialdetail/{{tutorial.slug}}">{{ tutorial.title }}</a>
{% endfor %}
{% get_taglist as tags for 'blog.Post' %}
{% for tag in tags %}
<a href="{% url 'tagged' tag.slug %}">{{ tag.name }}</a>
{% endfor %}
现在使用模型 ArticlePost 使用不同的应用名称文章。我应用了相同的想法,并且 ArticlePost 中的标签显示正确,但是当我单击其中一个时,它链接到博客 Post ListView 模板和空白,并且它具有正确的 slug,这是代码。
'''articles/view.py'''
def articlepost(request):
article_list = ArticlePost.objects.all()
context = {
'article_list': article_list,
}
return render(request, "articlepost.html", context)
class TagMixin(object):
def get_context_data(self, **kwargs):
context = super(TagMixin, self).get_context_data(**kwargs)
context['tags'] = Tag.objects.all()
return context
class TagIndexView(TagMixin, ListView):
template_name = 'articlepost.html'
model = ArticlePost
context_object_name = 'article_list'
def get_queryset(self):
return Post.objects.filter(tags__slug=self.kwargs.get('slug'))
'''articles/urls.py'''
path('tag/<slug:slug>/', views.TagIndexView.as_view(), name='tagged'),
'''articlepost.html'''
{% load taggit_templatetags2_tags %}
{% for article in article_list %}
<a href="/articledetail/{{article.slug}}">{{ article.title }}</a>
{% endfor %}
{% get_taglist as tags for 'articles.ArticlePost' %}
{% for tag in tags %}
<a href="{% url 'tagged' tag.slug %}">{{ tag.name }}</a>
{% endfor %}
任何帮助将不胜感激,干杯
解决方案
最后我发现了问题,两个 url 路径是相同的,django 属于第一个匹配项。所以我更改了其中一个的名称,我也更改了类视图的名称以确保。
'''urls.py'''
path('taging/<slug:slug>/', views.TagPostView.as_view(), name='taggeded'),
'''article post.html'''
{% get_taglist as tags for 'articles.ArticlePost' %}
{% for taging in tags %}
<a href="{% url 'taggeded' taging.slug %}">{{ taging.name }}</a>
{% endfor %}
这些名字没有任何意义,但没关系。现在它完美无缺。
推荐阅读
- javascript - 在需要时使 JSON 文件的属性可点击
- azure-active-directory - AzureAD - 应用注册的 oauth2AllowIdTokenImplicitFlow
- angular - 没有statusText问题的Chrome错误代码
- php - 为什么 Post 请求在使用 codeigniter 4 的服务器上不起作用?
- python - 如何使用 docker 文件将名称服务器添加为 echo nameserver 8.8.8.8 >> /etc/resolv.conf
- python - 如何使列重复值唯一?
- php - 基于行和列的 Mpdf 分页符
- javascript - 数据表垂直滚动到特定的行 id
- python - 将 Selenium 与 chromedriver (Python) 一起使用时出现对象不可调用错误
- angularjs - 如何在 AngularJS 中自定义输入字段长度?