gpt4 book ai didi

python - Django 2.1-namespace= 在 urls.py 中包含时做什么

转载 作者:行者123 更新时间:2023-12-01 01:00:42 25 4
gpt4 key购买 nike

我的 app_name 和命名空间运行良好,但我有一个简单的澄清 - 我认为这可能是我的 2.1 Django 中的内容,在早期的 Django 版本中可能有所不同。

我有一个名为 route 的应用程序,在它的 urls.py 中我有:

app_name = 'route'  
urlpatterns = [
path('first', views.FirstView.as_view(), name='first-view'),
]

在我的 views.py 和模板文件中,我在 reverse() 调用中使用 route:first-view{ % url .. %} 调用,一切正常。

我的困惑在于我的项目范围urls.py,我说:

urlpatterns = [
path('route/', include('route.urls', namespace='route')),
]

让我抓狂的是,namespace= 参数似乎什么也没做。如果我省略它,或者即使我说 namespace='abc',我的代码的工作原理是一样的 - 它似乎被 Django 2.1 100% 忽略。

此外,如果我在未设置 app_name 的情况下使用 namespace='route' ,则会收到错误:在 include() 中指定命名空间而不提供 app_name不支持

如果 namespace= 被忽略 - 那么我很高兴只设置 app_name - 我会保留它 - 看起来它必须有一个我可以做的目的想不通。或者也许这是不必要的并且来自 Django 的早期版本。

注意:我看过a similar question and answer但该示例并未解释使用 path 时 namespace 如何工作。我尝试避免使用 url/正则表达式模式并尽可能使用更简单的 path 模式。

最佳答案

include() 中使用 namespace 允许您多次包含相同应用程序,每个实例具有不同的命名空间。

你可以看一个例子in the docs ,其中 polls 应用程序包含在两个不同的命名空间中两次。

如果您仅在项目中包含 route.urls 一次,则不需要 namespace='route',并且可以将其删除。

关于python - Django 2.1-namespace= 在 urls.py 中包含时做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55812885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com