加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

django 2.1错误: Specifying a namespace in include() without

发布时间:2020-12-15 17:15:06 所属栏目:大数据 来源:网络整理
导读:错误信息: ??File?"I:xxurls.py",?line?22,?in?module????url('',?include('system.urls',?namespace='system-urls')),??File?"I:xxvenvlibsite-packagesdjangourlsconf.py",?line?39,?in?include????'Specifying?a?namespace?in?include()?without

错误信息:

??File?"I:xxurls.py",?line?22,?in?<module>
????url('',?include('system.urls',?namespace='system-urls')),??File?"I:xxvenvlibsite-packagesdjangourlsconf.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('',?include('apps.urls',?namespace='apps-urls')),????]

背景:

django?==?2.1

错误意思为:

django.core.exceptions.ImproperlyConfigured:不支持在include()中指定名称空间而不提供app_name。 在包含的模块中设置app_name属性,或者传递包含模式列表和app_name的2元组。

源码文件:

def?include(arg,?namespace=None):
????app_name?=?None
????if?isinstance(arg,?tuple):
????????#?Callable?returning?a?namespace?hint.
????????try:
????????????urlconf_module,?app_name?=?arg
????????except?ValueError:
????????????if?namespace:
????????????????raise?ImproperlyConfigured(
????????????????????'Cannot?override?the?namespace?for?a?dynamic?module?that?'
????????????????????'provides?a?namespace.'
????????????????)
????????????raise?ImproperlyConfigured(
????????????????'Passing?a?%d-tuple?to?include()?is?not?supported.?Pass?a?'
????????????????'2-tuple?containing?the?list?of?patterns?and?app_name,?and?'
????????????????'provide?the?namespace?argument?to?include()?instead.'?%?len(arg)
????????????)
????else:
????????#?No?namespace?hint?-?use?manually?provided?namespace.
????????urlconf_module?=?arg

????if?isinstance(urlconf_module,?str):
????????urlconf_module?=?import_module(urlconf_module)
????patterns?=?getattr(urlconf_module,?'urlpatterns',?urlconf_module)
????app_name?=?getattr(urlconf_module,?'app_name',?app_name)
????if?namespace?and?not?app_name:
????????raise?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.',????????)
????namespace?=?namespace?or?app_name
????#?Make?sure?the?patterns?can?be?iterated?through?(without?this,?some
????#?testcases?will?break).
????if?isinstance(patterns,?(list,?tuple)):
????????for?url_pattern?in?patterns:
????????????pattern?=?getattr(url_pattern,?'pattern',?None)
????????????if?isinstance(pattern,?LocalePrefixPattern):
????????????????raise?ImproperlyConfigured(
????????????????????'Using?i18n_patterns?in?an?included?URLconf?is?not?allowed.'
????????????????)
????return?(urlconf_module,?app_name,?namespace)

从上述源码可以看到,include需要两个参数,arg和namespace,?当namespace不为空时,arg参数必须是一个2元组,除了urlpatterns不能为空之外,app_name也必须填写。

解决办法:


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读