[英]Django-taggit, tag slug is not linking to the correct 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模板並為空白,並且具有正確的子句,這是代碼。
'''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 %}
名稱沒有任何意義,但沒關系。 現在,它可以完美運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.