一开始是遇到了TemplateDoesNotExist的错误,上百度都是说改settings.py里面的TEMPLATE的DIRS,

但我改了还是出现问题,

我用的《python编程从入门到实践》这本书的出版时间是2016的,当时作者用的是django 1.x版本,而现在官方已更新成4.x版本。

就出现一些由于版本更新而导致的问题,我来分享一下我的解决方案。

书中和现在的差异主要是:

  Django放弃使用url函数,而改为path和re_path ,所以有些语法就有小改变

他们都是用来配置路由的

  1.x:  url是支持正则,也支持直接匹配

  新版:  path不支持 正则表达式,不过re_path是支持的

那我们就可以这样改:

你的app/urls.py

from django.urls import re_path
from . import views urlpatterns = [
# 主页
re_path(r'^$', views.index, name='index'),
]

将导入的path改为导入re_path,然后用re_path的语句,(index是我的主网页)

项目/urls.py

from django.contrib import admin
from django.urls import include, path urlpatterns = [
path('admin/', admin.site.urls),
path('', include(('APP名称.urls', 'APP名称'), namespace='APP的名称')),
]

这里要在include里面创建一个元组('XXX.urls', ‘XXX’)

如果不改的话 命令行就会提示

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.core.exceptions.不正确配置:
不支持在include()中指定命名空间而不提供app_name。
在包含的模块中设置app_name属性,或者传递一个包含模式列表和app_name的2次元组。

它告诉我们解决方法有两种;

  1、就是我在上面改法,在include里面传递一个元组

  2、在你的应用的urls.py文件里面设置一个 app_name属性

以下是另一种解决方案:

你的APP/urls.py

from django.urls import re_path
from . import views urlpatterns = [
# 主页
re_path(r'^$', views.index, name='index'),
]
app_name = '你的APP名称'

项目/urls.py

from django.contrib import admin
from django.urls import include, path urlpatterns = [
path('admin/', admin.site.urls),
path('', include('APP名称.urls', namespace='APP的名称')),
]

这样问题就解决啦!

初学《python编程从入门到实践》web应用程序,出现错误的更多相关文章

  1. Python编程-从入门到实践 Eric Matthes 著 袁国忠 译 - - 第二章 动手试一试

    因为第一章的动手试一试基本都是探索性的,所以直接进入第二章. # 2.2 动手试一试 # 2_1 简单消息: 将一条消息存储到变量中,再将其打印出来. message = 'python 编程从入门到 ...

  2. 入门python:《Python编程从入门到实践》中文PDF+英文PDF+代码学习

    入门python推荐学习久负盛名的python入门书籍<Python编程从入门到实践>. 书中涵盖的内容是比较精简的,没有艰深晦涩的概念,最重要的是每个小结都附带有"动手试一试& ...

  3. 设置应用程序的样式并对其进行部署——《Python编程从入门到实践》

    我们将使用应用程序django-bootstrap3为Web应用程序设计样式.我们将把项目"学习笔记"部署到Heroku,这个网站能让我们们将项目推送到其服务器,让任何有网络连接的 ...

  4. 《Python编程:从入门到实践》分享下载

    书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...

  5. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

  6. Python编程从入门到实践笔记——文件

    Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...

  7. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  8. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  9. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

随机推荐

  1. 11.MongoDB系列之连接副本集

    1. Python连接副本集 from pymongo import MongoClient from bson.codec_options import CodecOptions from retr ...

  2. C# Static关键词的使用

    一.C#中类的方法分为静态方法和非静态方法 静态方法有Static关键词修饰 静态方法归类所有,而非静态方法归类的实例所有:静态方法无需类去实例化可直接调用 静态成员属于类所有,为各个类的实例所公用, ...

  3. 题解 P4058 [Code+#1]木材

    前言 这什么题啊,不就是个二分答案我从65到100都经历了一遍--(瞬间气哭) \(\sf {Solution}\) 题目理解起来不难的,大意就懒得写了. 一眼二分答案. 此题属于在形如 \(\{0, ...

  4. 驱动开发:内核LDE64引擎计算汇编长度

    本章开始LyShark将介绍如何在内核中实现InlineHook挂钩这门技术,内核挂钩的第一步需要实现一个动态计算汇编指令长度的功能,该功能可以使用LDE64这个反汇编引擎,该引擎小巧简单可以直接在驱 ...

  5. 关系抽取--Relation Extraction: Perspective from Convolutional Neural Networks

    一种使用CNN来提取特征的模型,通过CNN的filter的大小来获得不同的n-gram的信息,模型的结构如下所示: 输入 输入使用word2vec的50维词向量,加上 position embeddi ...

  6. 苹果 App Store 开始支持隐藏上架应用:只能通过链接下载

      据MacRumors报道,苹果公司最近宣布,正如其开发者网站上所概述的那样,App Store现在支持只能通过直接链接才能发现的隐藏应用.   图片来自 Apple 拥有不适合公开发布的应用的开发 ...

  7. onps栈移植说明(2)——编译器及os适配层移植

    2. 字节对齐及基础数据类型定义 协议栈源码(码云/github)port/include/port/datatype.h中根据目标系统架构(16位 or 32位)及所使用的编译器定义基础数据类型及字 ...

  8. 第一百零八篇:最常用的基本数据类型(Number,String类型)

    好家伙, 1.Number类型 从名称中我们可以得出,这是一个存放数值的类型, 不同的数值类型相应地也有不同的数值字面量格式 number类型可以储存不同进制的数(不常用就是了) 八进制:在数前加一个 ...

  9. Python中Print方法

    1 number1 = int(input("请输入第一个数:")) 2 number2 = int(input("请输入第二个数:")) 3 4 # 方法一: ...

  10. C#使用正则表达式来验证是否是16进制字符串

    /// <summary> /// 判断是否为16进制字符串 /// </summary> /// <param name="hexString"&g ...