[英]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.