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也必须填写。 解决办法:
|