Python 如何反转';url';django中包含的URL数量
假设我的项目Python 如何反转';url';django中包含的URL数量,python,django,django-urls,Python,Django,Django Urls,假设我的项目url.py如下所示: urlpatterns = [ path("admin/", admin.site.urls), path("foo/", include("foo.urls"), name="foo"), ] 然后我有一个文件foo/urls.py,其中包含一些进一步的URL: urlpatterns = [ path("bar/", views.b
url.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')来得到foo`。有没有办法做到这一点
一(unideal)解决方案
我可以在foo/urls.py
的最末端放置一个虚拟视图,路径为”
,然后将其反转。但是我不喜欢这个解决方案。它让人感觉有点黑客味,如果用户点击过这个URL,它可能会有问题。您的unideal解决方案实际上正是Django想要的。这意味着在foo.url
中添加路径:path(“,views.index,name=“foo”)
我知道这让您感觉有点不舒服,但目前/foo路径指的是服务器上没有资源,因为还没有定义它的路径。Django甚至无法逆转这条道路,因为它没有指向任何东西
如果您仍然希望反转路径,而Django将返回404错误,那么实际上您必须定义一个返回404响应的简单视图。我是否可以建议在fooinclude
调用中包含一个名称空间。这将有助于更好的url反转,并允许您使用具有相同名称的多个url,只要名称空间不同。