我需要像这样配置Django网址:
/<slug_category>/
/<slug_category>/<slug_sub_category>/
/<slug_category>/<slug_post>/
我试过这个。问题是/<slug_category>/<slug_sub_category>/
和/<slug_category>/<slug_post>/
会产生冲突。
urlpatterns = [
url(r'^(?P<category_slug>[\w-]+)$', views.category),
url(r'^(?P<category_slug>[\w-]+)/(?P<slug_subcategory>[\w-]+)/$', views.category),
url(r'^(?P<category_slug>[\w-]+)/(?P<post_slug>[\w-]+)/$', views.post),
]
有可能吗?有人能帮助我吗?
谢谢!
答案 0 :(得分:1)
您不能使用两个不同的URL,因为它们具有相同的模式(正如评论中指出的那样)。解决方案是使用相同的URL并相应地获取内容。例如
urlpatterns = [
url(r'^(?P<category_slug>[\w-]+)$', views.category),
url(r'^(?P<category_slug>[\w-]+)/(?P<slug_subcategory>[\w-]+)/$', views.cat_or_post),
]
然后你有一个试图获取帖子的函数,如果失败则将它传递给views.category。像这样:
def cat_or_post(request,category_slug,slug_subcategory):
try:
post = Post.objects.get(slug=slug_subcategory)
# put the rendering code here
except Post.DoesnotExist:
return category(request,category_slug,slug_subcategory)