我要做的是为两个或更多应用程序提供通用命名空间。
假设我有一个包含3个应用程序的应用程序文件夹:仪表板(显示其他应用程序的管理面板),客户端(显示花式表)和订单(与客户端相同)。 看起来像这样:
-- apps
|-- dashboard
| |-- views.py
| |-- models.py
| |-- urls.py
|-- clients
| |-- views.py
| |-- models.py
| |-- urls.py
|-- orders
| |-- views.py
| |-- models.py
| |-- urls.py
在我的主要urls.py中,我有:
url(r'^dashboard/', include('apps.dashboard.urls',
namespace='dashboard',
app_name='dashboard')),
在dashboard / urls.py中:
url(r'^clients/', include('apps.clients.urls')),
url(r'^orders/', include('apps.orders.urls')),
在客户中:
url(r'^$', views.AllClientsList.as_view(), name='clients-all'),
因此,我希望在客户端和订单应用中为网址设置相同的命名空间,以将其用作{% url "dashboard:clients-all" %}
。但它根本不起作用 - NoReverseMatch: Reverse for 'customers_detailed' not found. 'customers_detailed' is not a valid view function or pattern name.
有什么办法吗?
更新:
像<a href='{% url 'dashboard:customers-all' %}'>Customers</a>
这样的链接会引发错误&#34;反向为客户 - 所有&#39;未找到。 &#39;的客户,所有&#39;不是有效的视图函数或模式名称。&#34;
urls.py
urlpatterns = [ url(r'^dashboard/', include('apps.dashboard.urls')), ]
应用/仪表板/ urls.py
app_name = 'dashboard'
urlpatterns = [ url(r'^customers/', include('apps.customers.urls')), ]
应用/客户/ urls.py
app_name = 'customers'
urlpatterns = [ url(r'^$', views.AllCustomerList.as_view(), name='customers-all'), ]
答案 0 :(得分:1)
由于您的dashboard
网址包含customers
网址,因此您需要包含嵌套的命名空间:
{% url 'dashboard:customers:customers-all' %}