gpt4 book ai didi

django - 为什么在包含另一个 URLconf 时不能只传递 `app_name` 关键字 arg?

转载 作者:行者123 更新时间:2023-12-03 11:35:00 26 4
gpt4 key购买 nike

中标urls.py Django 应用程序,如果我通过 app_name没有 namespaceinclude()调用,如下所示:

urlpatterns = [
# ...
url(r'^', include('foo.urls', app_name='foo')),
# ...
]

当点击包含的网址之一时,我收到如下错误。
ValueError: Must specify a namespace if specifying app_name.
所以有必要这样做:
urlpatterns = [
# ...
url(r'^', include('foo.urls', namespace='foo-urls', app_name='foo')),
# ...
]

我没有看到两者之间的硬依赖;为什么要指定 namespace为了能够指定一个 app_name ?

最佳答案

如果您使用的是 命名空间 中的属性包括 函数,你必须定义 应用名称在申请中 urls.py 您正在使用的文件。 > Django 2.0 URL dispatcher documentation
例如,如果这是您的项目结构:

project/
├── app1
│   └── urls.py
├── app2
│   └── urls.py
└── project
└── urls.py

而你想 包括 (app1, app2) url,你首先必须定义 应用名称在 app1/urls.py 和 app2/urls.py 中:
file: app1/urls.py :
app_name='app1'
urlpatterns = [
path('', views.home, name='home'),
]
file: app2/urls.py :
app_name='app2'
urlpatterns = [
path('', views.home, name='home'),
]
file: project/urls.py :
urlpatterns = [  
path('', include('app1.urls', namespace='app1')),
path('', include('app2.urls', namespace='app2')),
]

所以,你现在可以使用这样的东西 {% url 'app1:home' %}{% url 'app2:home' %}在您的模板文件中。

关于django - 为什么在包含另一个 URLconf 时不能只传递 `app_name` 关键字 arg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620001/

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