[英]Tag detail page with Django-taggit
我試圖在我的django博客上為標簽創建頁面。 我已經有一個簡單的索引頁面,其中顯示了所有已使用標簽的列表,現在我希望每個標簽都有單獨的頁面,在該頁面上,我將顯示所有標記有該標簽的帖子。 這些標簽詳細信息頁面的url結構將如下所示
本地主機/標簽/我的標簽-這里
我已經安裝了django-taggit並添加了一些標簽,並且它們在上面提到的帖子詳細信息頁面和標簽索引頁面上顯示得很好,但是當我嘗試訪問每個標簽詳細信息頁面(例如/ tag / test)時,我得到了404。
這些是我的文件以及下面的完整錯誤消息。
views.py
def tag_detail(request, tag):
tag = get_object_or_404(Tag, tag=tag.name)
return render(request, 'blog/tags_detail.html', {'tag': tag})
urls.py(應用程序)
urlpatterns = [
url(r'^$', views.blog_index, name='blog_index'),
url(r'^(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/'\
r'(?P<post>[-\w]+)/$',
views.blog_post_detail,
name='blog_post_detail'),
url(r'^contact/$', views.contact_form, name='contact_form'),
url(r'^thanks/$', views.thanks_view, name='thanks_view' ),
url(r'^about/$', views.about, name='about'),
url(r'^upload/$', views.upload_image, name='upload_image'),
url(r'^tag/(?P<tag>[-/w]+)/$', views.tag_detail, name='tag_detail'),
url(r'^tags/$', views.tags_index, name='tags_index')
]
這是完整的錯誤信息
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/tag/test
我認為這是問題還是網址結構? 對於該視圖,我不是100%確定這是否是正確的方法,但是我嘗試與我的帖子詳細信息視圖相同。
謝謝
問題出在您的views.py文件中。 在此代碼中:
def tag_detail(request, tag):
tag = get_object_or_404(Tag, tag=tag.name)
return render(request, 'blog/tags_detail.html', {'tag': tag})
您在這里寫道:
tag = get_object_or_404(Tag, tag=tag.name)
您在URL中傳遞了一個標記,因此正確的方法是:
tag = get_object_or_404(Tag, tag=tag)
但這僅在您的模型中以Unicode返回標簽名稱的情況下才有效,例如:
class Tag(models.Model):
name = models.CharField()
def __unicode__(self):
return unicode(self.name)
並且,如果這仍然不起作用,則settings.py文件中的TEPLATE_DIR設置可能存在問題。 然后,您必須共享用於項目文件結構的settings.py代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.