版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38375620/article/details/85562774
include()
include
(module,namespace = None)[源代码] ¶
include
(pattern_list)
include
((pattern_list,app_namespace),namespace = None)
一个函数,它将完整的Python导入路径带到另一个URLconf模块,该模块应该“包含”在这个地方。可选地,还可以指定将包括条目的应用程序命名空间和实例命名空间。
通常,应用程序命名空间应由包含的模块指定。如果设置了应用程序命名空间,则该namespace
参数可用于设置不同的实例命名空间。
include()
还接受返回URL模式的iterable或包含此类iterable的2元组以及应用程序命名空间的名称作为参数。
参数: |
---|
请参阅包含其他的URLconf和URL名称空间以及包含的URLconf。
在Django 2.0中更改:
在旧版本中,此功能位于django.conf.urls
。旧位置仍可用于向后兼容。
ERROR
File "E:\pycharm\mysites\mysites\urls.py", line 27, in <module>
path(r'',include('password_reset.urls',namespace='pwd_reset'))
File "E:\python35\lib\site-packages\django\urls\conf.py", line 39, in include
'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.
urlpatterns = [
url(r'^pwd_reset/', include('password_reset.urls',namespace='pwd_reset')),
]
错误意思为:
django.core.exceptions.ImproperlyConfigured:在include方法里面指定namespace却不提供app_name是不允许的。
在包含的模块里设置app_name变量,或者在include方法里面提供app_name参数。
include需要两个参数,arg和namespace, 当namespace不为空时,arg参数必须是一个2元组,除了urlpatterns不能为空之外,app_name也必须填写。
解决方法
方法1:在proj/urls.py中修改
from django.urls import path,include
from app import urls as app_url
urlpatterns = [
path('', include((common_url,'common'), namespace='common')),
]
方法2:在app/urls.py中修改
from django.urls import path
from .views import index
app_name='common'
urlpatterns = [
path('',indexurl,name='index'),
]