![](/img/trans.png)
[英]Django social_django 'Specifying a namespace in include() without providing an app_name '
[英]Django 2 namespace and app_name
我很難理解app_name和名稱空間之間的聯系。
考慮項目級別urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls', namespace='blog')),
]
考慮應用程序級別(博客)urls.py
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.post_list, name='post_list'),
path('<int:year>/<int:month>/<int:day>/<slug:post>/', views.post_detail, name='post_detail'),
]
如果我將app_name注釋掉,則會得到以下結果。
'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in
the included module, or pass a 2-tuple containing the list of patterns and app_name instead.
如果我將app_name重命名為任意字符串,則不會出現錯誤。
app_name = 'x'
我已經閱讀了文檔,但是仍然沒有點擊。 誰能告訴我app / name和名稱空間的連接方式/原因,為什么允許它們具有不同的字符串值? 手動設置app_name是否不是多余的?
嘗試刪除app_name ='blog'
在您的情況下,您應該使用:
'blog:post_list'
和
'blog:post_detail'
您還可以像這樣在第一個URL中刪除namespace='blog'
:
urlpatterns = [
path('blog/', include('blog.urls')),
]
然后您可以在模板中引用網址,而無需添加“ blog:.....”:
'post_list'
'post_detail'
嘗試使用元組。
urlpatterns = [
path('blog/', include(('blog.urls', 'blog'))),
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.