【发布时间】:2020-09-19 22:48:43
【问题描述】:
我的 django 应用中有两个模块,比如说cats 和dogs,我想要这样的网址:
-
/fluffy/meow.html- Fluffy 是猫的名字 /fluffy/eat.html-
/jackie/bark.html- Jackie 是条狗 -
/jackie/eat.html- 与猫模块中的名称相同
会有很多不同的猫和狗,但可以保证,猫和狗不能同名。
如果我这样写urls.py:
urlpatterns += [
path('<slug:cat_name>/', include('cats.urls')),
path('<slug:dog_name>/', include('dogs.urls')),
]
请求/jackie/eat.html 将被cats 捕获
模块,但是没有名字为jackie的猫,所以它会给出404错误。是否可以让 django 检查另一个 url 路径而不是得到 404 错误?
我知道,我可以使用这个urls.py
urlpatterns += [
path('cats/<slug:cat_name>/', include('cats.urls')),
path('dogs/<slug:dog_name>/', include('dogs.urls')),
]
但我不想要它
大约有 1000 只猫的名字,而且不经常更改,所以我可以将猫的名字硬编码成巨大的 re_path,但我希望有更好的解决方案
urlpatterns += [
re_path(r'^(?P<cat_name>fluffy|simon|thomas|etc..)/$', include('cats.urls')),
path('<slug:dog_name>/', include('dogs.urls')),
]
【问题讨论】:
-
我很喜欢这个问题,我认为应该有答案。尤其与下面的不同。
标签: django django-urls