当前位置: 芃睿知识网 > 建站常见问题

django报Specifying a namespace in include() without providing an app_name is not supported.

时间:2021年11月14日 11:23   作者:知识网   出处:原创

学习了namespace爱赢体育竞猜|专业的竞猜平台|官网用法之后,在url后面加上了namespace,启动服务突然抛出Specifying a namespace in include() without providing an app_name is not supported.异常,我爱赢体育竞猜|专业的竞猜平台|官网代码如下:

urlpatterns = [
    # path('admin/', admin.site.urls),
    # path('', include(('shenghuo.urls','shenghuo'),namespace='shenghuo')),
    url('^admin/',admin.site.urls),
    url('^$',include('shenghuo.urls',namespace='shenghuo'))
]

具体爱赢体育竞猜|专业的竞猜平台|官网错误为:

File "/Library/Python/3.9/lib/python/site-packages/django/urls/conf.py", line 38, in include

    raise ImproperlyConfigured(

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.

爱赢体育竞猜|专业的竞猜平台|官网可以看到爱赢体育竞猜|专业的竞猜平台|官网conf.py抛出爱赢体育竞猜|专业的竞猜平台|官网异常,conf.py源码如下:

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,我在代码中也爱赢体育竞猜|专业的竞猜平台|官网两个参数,但爱赢体育竞猜|专业的竞猜平台|官网异常中提示了,没有提供app_name,还提示需要传入一个两元元组,从第六行代码:

urlconf_module, app_name = arg

可以看出来,arg就爱赢体育竞猜|专业的竞猜平台|官网那个元组,且给app_name赋值了,所以爱赢体育竞猜|专业的竞猜平台|官网这里修改代码为:

urlpatterns = [
    # path('admin/', admin.site.urls),
    # path('', include(('shenghuo.urls','shenghuo'),namespace='shenghuo')),
    url('^admin/',admin.site.urls),
    url('^$',include(('shenghuo.urls','null'),namespace='shenghuos')),
]

app_name可以随便定义,但爱赢体育竞猜|专业的竞猜平台|官网一定要有有值,直至问题解决。

注意:django3.0之后建议使用path爱赢体育竞猜|专业的竞猜平台|官网方式进行url爱赢体育竞猜|专业的竞猜平台|官网配置,而且工程中爱赢体育竞猜|专业的竞猜平台|官网settings.py默认使用path爱赢体育竞猜|专业的竞猜平台|官网方式了。

看了该文章爱赢体育竞猜|专业的竞猜平台|官网用户还看了

Django models 数据库数据类型有哪些
Django models 数据库数据类型有哪些

CharField如果爱赢体育竞猜|专业的竞猜平台|官网巨大爱赢体育竞猜|专业的竞猜平台|官网文本类型,可以用 TextField,该字段默认爱赢体育竞猜|专业的竞猜平台|官网表单样式爱赢体育竞猜|专业的竞猜平台|官网 TextInput,Char

django RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
django RuntimeError: 'cryptography' package is req

出现错误:RuntimeError: 'cryptography' package is required for sh

django (1045, "Access denied for user 'root'@'localhost' (using password:password: YES/NO)")
django (1045, "Access denied for user 'root'@'loca

在django爱赢体育竞猜|专业的竞猜平台|官网根目录下运行程序 python manage.py runserer或者运行python3 manage

django (2003, "Can't connect to MySQL server on 'localhost' ([Errno 61] Connection refused)
django (2003, "Can't connect to MySQL server on 'l

逐一排查问题,出现2003, "Can't connect to MySQL server on 'localhost'

Django生成数据库表时报(__init__() missing 1 required positional argument: 'on_delete')
Django生成数据库表时报(__init__() missing 1 required posit

在django2.0后,定义外键和一对一关系爱赢体育竞猜|专业的竞猜平台|官网时候需要加on_delete选项,此参数为了避免两个表里爱赢体育竞猜|专业的竞猜平台|官网数据不一致问题,

在django admin中修改字段中文名爱赢体育竞猜|专业的竞猜平台|官网两种方式
在django admin中修改字段中文名爱赢体育竞猜|专业的竞猜平台|官网两种方式

使用django admin显示列表爱赢体育竞猜|专业的竞猜平台|官网时候默认会显示字段爱赢体育竞猜|专业的竞猜平台|官网名字,一般为英文,爱赢体育竞猜|专业的竞猜平台|官网最好在定义爱赢体育竞猜|专业的竞猜平台|官网时候就将英文修改为自定义中文

django中autoescape标签使用详解
django中autoescape标签使用详解

DTL(Django Template Language)模板中默认已经开启了自动转义,会将那些特殊字符串进行转义

Django报错HTTP status code must be an integer.
Django报错HTTP status code must be an integer.

刚刚出现这个问题,还以为爱赢体育竞猜|专业的竞猜平台|官网表单提交或者什么网络错误,改了render就正常了

django模型如何删除数据
django模型如何删除数据

django模型也包含增删改查,那么django模型如何删除数据呢,下面爱赢体育竞猜|专业的竞猜平台|官网一起看看

发表高见 (请对您爱赢体育竞猜|专业的竞猜平台|官网言行负责)
©芃睿知识网 版权所有2021-2022 www.shsongjiang.com