Django2.0异常:Specifying a namespace in include() without providing an app_name is not supported.

Django2.0异常:Specifying a namespace in include() without providing an app_name is not supported.

新建

模板

小书匠

欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过设置里的修改模板来改变新建文章的内容。

Django2.0异常:Specifying a namespace in include() without providing an app_name is not supported.编辑器

在CRM项目权限分配管理中

用django设置好了URL后报错。URL代码为

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^rbac/‘, include(‘rbac.urls‘,namespace=‘rbac‘)),
    url(r‘^‘, include(‘web.urls‘)),
]

源码为

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)


作者:masserd

来源:CSDN

原文:https://blog.csdn.net/zoulonglong/article/details/79612973

版权声明:本文为博主原创文章,转载请附上博文链接!

从include()函数可以看出来,这个函数有两个参数,一个arg,一个namespace,我在代码中也是两个参数,但是异常中提示了,没有提供app_name,还提示需要传入一个两元元组,从第六行代码,可以看出来,arg就是那个元组,且给app_name赋值了

urlconf_module, app_name = arg

经过一番面向百度debug,修改后代码为

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^rbac/‘, include((‘rbac.urls‘,‘rbac‘),namespace=‘rbac‘)),
    url(r‘^‘, include(‘web.urls‘)),
]

成功解决问题

原文地址:https://www.cnblogs.com/bruce-blogs/p/11184144.html

时间: 2024-10-18 00:32:08

Django2.0异常:Specifying a namespace in include() without providing an app_name is not supported.的相关文章

'Specifying a namespace in include() without providing an app_name '

问题: File "D:\Python34\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 provi

解决:Specifying a namespace in include() without providing an app_name和XXX is not a registered namespace问题

python3 Django 环境下,如果你遇到namespace没有注册以及在根目录下urls.py中的include方法的第二个参数namespace添加之后就出错的问题. 出错问题: 'Specifying a namespace in include() without providing an app_name ' django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() witho

五、Django学习之django3.0.3报错:Specifying a namespace in include() without providing an app_name

在根目录下的urls.py中使用了include方法,并且使用了namespace参数,如下图: url(r'^my_app/', include(('my_app.urls'), namespace="my_app")) 在启动项目时,会报错:'Specifying a namespace in include() without providing an app_name ' 这是因为django2相对于django1做了改动,在include函数里增加了参数app_name,表示

Django2.0中URL的路由机制

Django2.0中URL的路由机制 路由是关联url及其处理函数关系的过程.Django的url路由配置在settings.py文件中ROOT_URLCONF变量指定全局路由文件名称. Django的路由都写在urls.py文件中的urlpatterns列表中,由path()或re_path()作为元素组成. Django的URL路由流程: 1 Django查找全局urlpatterns变量(urls.py) 2 按照先后顺序,对URL逐一匹配urlpatterns每个元素 3 找到第一个匹配

django2.0 路由规则

Django2.0中URL的路由机制 路由是关联url及其处理函数关系的过程.Django的url路由配置在settings.py文件中ROOT_URLCONF变量指定全局路由文件名称. Django的路由都写在urls.py文件中的urlpatterns列表中,由path()或re_path()作为元素组成. Django的URL路由流程: 1 Django查找全局urlpatterns变量(urls.py) 2 按照先后顺序,对URL逐一匹配urlpatterns每个元素 3 找到第一个匹配

五 【用django2.0来开发】实现会员注册功能

上一节我们完成了会员功能的后台管理, 这一节我们需要完成会员注册功能, 涉及到以下几个模块 URL配置 views视图模块 模板 Request/Response对象的使用 项目地址:https://gitee.com/ccnv07/django_example URL路由配置 django是通过项目的urls.py文件来定义网站的url路由, 在我们的项目中是cms/urls.py文件 django的基本访问流程 访问url时, 通过cms/urls.py中定义的url路由, 获取到要执行的视

Python 3之Django2部署(centos7+nginx+python3+django2.0)

前置工具,系统为centos7.5,为了方便管理,可以安装宝塔免费版本 首先, yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh 正常干净系统会顺利完成安装,使用过程是感觉自己记下配置和更新的过程,类似版本更新或者冲突的先别急着百度,容易造成冲突. 宝塔6.6版本是依赖python2.7的,所以python可以升级

Django2.0 URL配置

一.实例 先看一个例子: from django.urls import path from . import views urlpatterns = [ path('articles/2003/', views.special_case_2003), path('articles/<int:year>/', views.year_archive), path('articles/<int:year>/<int:month>/', views.month_archive

解决Python3.6.5+Django2.0集成xadmin后台点击添加或者内容详情报 list index out of range 的错误

一 问题说明在创建Model的时候,如果存在类型是DateTimeField的字段,则在xadmin后端管理界面里,对该Model进行添加操作的时候,会报list index out of range. 这是上篇文章创建的Model: class IDC(models.Model): name = models.CharField(max_length=64) contact = models.CharField(max_length=32) phone = models.CharField(m