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

2024-04-20 18:08

本文主要是介绍Specifying a namespace in include() without providing an app_name is not supported,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    在学习django 2.0开发web应用程序过程中,通过项目基础URL(http://localhost:8000/)返回默认的Django网站。如若我们需要房访问自己建立的网站,就需要通过URL映射自己程序的网页。

    通过添加自身程序代码来进行URL映射过程中,发现程序报错:

  File "F:\编程资料\python\python project\learndjango\learndjango\urls.py", line 21, in <module>path('', include('learndjangos.urls', namespace='learndjangos'))File "E:\program files\Python\Python36\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.

    查看django.urls中include函数源码:

"""Functions for use in URLsconfs."""
from functools import partial
from importlib import import_modulefrom django.core.exceptions import ImproperlyConfiguredfrom .resolvers import (LocalePrefixPattern, RegexPattern, RoutePattern, URLPattern, URLResolver,
)def include(arg, namespace=None):app_name = Noneif isinstance(arg, tuple):# Callable returning a namespace hint.try:urlconf_module, app_name = argexcept 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 = argif 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)def _path(route, view, kwargs=None, name=None, Pattern=None):if isinstance(view, (list, tuple)):# For include(...) processing.pattern = Pattern(route, is_endpoint=False)urlconf_module, app_name, namespace = viewreturn URLResolver(pattern,urlconf_module,kwargs,app_name=app_name,namespace=namespace,)elif callable(view):pattern = Pattern(route, name=name, is_endpoint=True)return URLPattern(pattern, view, kwargs, name)else:raise TypeError('view must be a callable or a list/tuple in the case of include().')path = partial(_path, Pattern=RoutePattern)
re_path = partial(_path, Pattern=RegexPattern)

    发现在Django 2.0中,django.urls中include函数第一个参数传入的是tuple类型,其中一个是参数是app_name,且app_name需赋值。我们修改程序:

from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path(r'', include(('learndjangos.urls', 'learndjangos'), namespace='learndjangos'))
]

    在views.py中代码如下:

from django.shortcuts import render# Create your views here.def index(request):return render(request, 'learndjangos/index.html')

    经过测试,访问http://localhost:8000,页面顺利打开。

这篇关于Specifying a namespace in include() without providing an app_name is not supported的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/920965

相关文章

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

同城跑腿APP开发,随叫随到超方便!

随着移动互联网的发展和人们生活节奏的加快,越来越多的人们没有闲暇的时间来做一些繁琐的事情,比如说买药、挂号、排队、送花、取文件等等。如果没有时间去处理这些事情怎么办?开发同城跑腿APP,提供跑腿服务,随时办事随时下单,只需在手机上轻轻一点,就可完成跑腿需求。 首先,跑腿小程序有几种开发方式。第一种是自己组建开发,这种方式比较适合有软件开发能力的企业,比较花费时间和金钱成本。第二种是找到第三方

基于uni-app和图鸟UI开发上门服务小程序

一、技术栈选择 uni-app:我们选择了uni-app作为开发框架,因为它基于Vue.js,允许我们编写一次代码,发布到多个平台,包括iOS、Android、Web以及各种小程序。uni-app的丰富组件库、高效的状态管理以及便捷的预览调试功能,极大提升了开发效率。 图鸟UI:图鸟UI是基于uni-app的UI框架,它提供了大量美观且实用的组件和页面模板,帮助我们快速构建出风格统一、用户体

H5唤醒APP方法,H5唤醒不了App跳下载页

H5唤醒APP方法,H5唤醒不了App跳下载页 let ua = window.navigator.userAgent.toLowerCase();let src = {iphone: /iphone/i.test(ua),android: /android/i.test(ua),windows: /windows/i.test(ua),weixin: /micromessenger/i.te

移动终端app测试点总结

以下所有测试最后必须在真机上完整的执行1、安装、卸载测试 在真机上的以及通过91等第三方的安装与卸载安装在手机上还是sd卡上 2、启动app测试3、升级测试  数字签名、升级覆盖安装、下载后手动覆盖安装、跨版本升级、升级后可以正常使用。  覆盖安装要确保数据库有字段更新的话,能正常更新,否则就容易导致app异常。4、功能测试  包括功能点、业务逻辑、关联性(主要测试客户端与PC端的交互,客户端

告别繁琐邀请码,Xinstall助你轻松搭建高效App推广体系!

随着互联网流量的不断变迁,App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系,成为众多企业亟待解决的问题。在这个背景下,Xinstall凭借其强大的功能和灵活的解决方案,成为了App推广的得力助手。 一、传统营销与获客痛点 传统企业营销依赖现有的流量池与少量获客渠道,但当互联网流量红利衰退,仅依靠少量渠道和简单的数据分析显然不现实。企业需要提高获客转化的效率和用户留存

fiddler抓包——抓取App上https请求

配置 https的请求需要安装证书(http的话不用安装) 1、fiddler配置 2、手机浏览器输入http://你的电脑的ipv4地址:8888/ 例如:http://192.168.1.101:8888/,打开看的以下页面,点击:FiddlerRoot certificate下载证书。这样就安装了证书了,可以抓HTTPS的包的。  要是打不开这个地址,先在电脑上浏览器输入这

App推广告别邀请码,Xinstall助您一键触达海量用户!

在移动互联网高速发展的今天,App的推广与运营已成为每个开发者都必须面对的问题。然而,随着互联网流量的日益分散和用户需求的不断变化,传统的App推广方式已经难以满足现代市场的需求。尤其是在获取用户时,很多开发者还在采用传统的邀请码模式,这不仅增加了用户的操作难度,也限制了App的推广范围。那么,如何在这个竞争激烈的市场中脱颖而出呢?今天,我们要为您介绍的是——Xinstall,一个无需邀请码,即可

为什么 JakeWharton 建议:App 只要用到一个 Activity ?

我们来看看这条回答都提到了哪些内容,对 Activity 和 Fragment 之间的爱恨情仇有何独到的见解,凭什么能得到 JakeWharton 本尊的青睐有加。 因为 Activity 是一个程序入口。你可以将其视为 app 的一个 main 函数。站在用户的立场上,通常你进入 app 的方式可能包括以下几种: launcher 桌面程序(main 函数入口); 来自参数化 m

iOS app 无侵入控制语言显示

最近遇到了一个需求,对于支持国际化的app,需要显示指定的语言。比如:一个app做了“中文”和“英文”两种国际化语言,公司销售拿着这个app去了德国,姑且说是入乡随俗,所以呢,就把手机语言切成了德语。     这样问题就来了:在国内用的是中文,现在切成了德文,然而app依然显示的是中文,要求显示为英文。     首先,在没有无法立刻更新app的情况下,我让他提供了app语言首选项列表,