Django_URL include ()方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38375620/article/details/85562774

include()

includemodulenamespace = None[源代码] ¶

includepattern_list

include(pattern_listapp_namespace)namespace = None

一个函数,它将完整的Python导入路径带到另一个URLconf模块,该模块应该“包含”在这个地方。可选地,还可以指定将包括条目的应用程序命名空间实例命名空间

通常,应用程序命名空间应由包含的模块指定。如果设置了应用程序命名空间,则该namespace参数可用于设置不同的实例命名空间。

include() 还接受返回URL模式的iterable或包含此类iterable的2元组以及应用程序命名空间的名称作为参数。

参数:
  • module - URLconf模块(或模块名称)
  • namespacestr) - 包含的URL条目的实例名称空间
  • pattern_list - Iterable path()和/或re_path()实例。
  • app_namespacestr) - 包含的URL条目的应用程序名称空间

请参阅包含其他的URLconfURL名称空间以及包含的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'),

]

猜你喜欢

转载自blog.csdn.net/qq_38375620/article/details/85562774