繁体   English   中英

如何反转 django 中包含的 url 的“url”

[英]How to reverse 'url' of included urls in django

假设我的项目urls.py看起来像这样:

urlpatterns = [
    path("admin/", admin.site.urls),
    path("foo/", include("foo.urls"), name="foo"),
]

然后我有一个文件foo/urls.py ,它有一些进一步的 url:

urlpatterns = [
    path("bar/", views.bar, name="bar"),
    path("baz/", views.baz, name="baz"),
]

我想做什么

获取“部分”url,它将带您到包含的“url”。 例如,我可以做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 响应的简单视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM