python - 如何在 django 中反转包含 url 的“url”
问题描述
假设我的项目urls.py
看起来像这样:
urlpatterns = [
path("admin/", admin.site.urls),
path("foo/", include("foo.urls"), name="foo"),
]
然后我有一个文件foo/urls.py
,其中有一些进一步的网址:
urlpatterns = [
path("bar/", views.bar, name="bar"),
path("baz/", views.baz, name="baz"),
]
我想做什么
获取将您带到包含的“网址”的“部分”网址。例如,我可以reverse("bar")
做得到foo/bar
. 但我似乎不能做reverse('foo') to get just
foo`。有没有办法做到这一点。
一种(不理想的)解决方案
foo/urls.py
我可以在最末端放置一个虚拟视图,路径为""
,然后将其反转。但是我不喜欢这个解决方案。感觉很hacky,如果用户点击这个URL,可能会出现问题。
解决方案
您不理想的解决方案实际上正是 Django 中的预期方式。foo.urls
这意味着在:中添加路径path("", views.index, name="foo")
。
我知道这对您来说感觉很奇怪,但目前 /foo 路径没有引用您服务器上的资源,因为尚未定义它的路径。Django 甚至无法逆转这条路径,因为它没有任何意义。
如果您仍然想反转路径,而 Django 将返回 404 错误,您实际上必须定义一个返回 404 响应的简单视图。
推荐阅读
- sitecore8.2 - Sitecore SXA 错误路径中的非法字符
- c# - 生成带有版本的 Azure KeyVault SecretIdentifier (Url)
- android - 微调器没有更新
- kubernetes - 即时编辑 Kubernetes pod
- javascript - 为什么我们需要在 Redux 中从 reducer 返回状态?
- pandas - 我从数据集中删除了无限值,但它没有用?
- javascript - 从子目录运行 eslint
- c++ - 同一程序的运行时间差别很大,有时达到1000+us
- java - Spring Reactive 测试不会导致预期的错误
- javascript - 在主 html 文件本身中显示 NodeJS 错误