[Python] Django 报错记录与解决

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: [Python] Django 报错记录与解决

1 虚拟环境创建Django项目:ImportError: cannot import name ‘Iterator’ from ‘collections’ (D:\python3.10.0\lib\collections_init_.py)

报错原因:

Python3.10版本中,库collections停用了,所以在Python3.10版本环境下执行django-admin startproject 项目名命令创建Django项目会报错。

解决:

方法一:创建虚拟环境时指定python版本

virtualenv -p 指定版本python.exe的安装路径 虚拟环境名
virtualenv -p D:\python3.9.7\python.exe test01

方法二:更改系统环境变量配置中默认优先使用的python版本

前提已经安装好其他版本的Python


2 CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

原因:

当全局配置文件中的DEBUG配置项设置为False时候,必须在ALLOWED_HOSTS配置项中配置允许哪些IP地址访问我们的django后台站点。

解决:

在全局配置文件 setting.py 中ALLOWED_HOSTS配置项中添加允许访问我们的django后台站点的IP地址

DEBUG = False
ALLOWED_HOSTS = [
    'localhost',
    '127.0.0.1',
]
# 运行所有的IP地址访问我们的django后台站点
# ALLOWED_HOSTS = ['*']

3 ERRORS: ?: (admin.E403) A ‘django.template.backends.django.DjangoTemplates’ instance must be configured in TEMPLATES in order to use the admin application.

解决:

只需将django的默认模板引擎配置添加在模板引擎的配置项中的最后即可(注意模板文件夹的路径)

TEMPLATES = [
    # Jinja2模板引擎配置
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',  # 配置Jinja2模板引擎
        # BASE_DIR 指向项目目录
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 配置模板文件加载目录
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            # 补充 Jinja2 模板引擎环境
            # 'environment': '项目目录.utils.jinja2_env.jinja2_environment',
            # 'environment': 'test_pro01.utils.jinja2_env.jinja2_environment',
        },
    },
    # Django 默认模板引擎
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

4 django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

报错原因:

1.项目的虚拟环境中缺少MySQL需要的驱动程序MySQLdb,在python2.x中使用的MySQL驱动程序为MySQLdb,而在python3.x中需要使用PyMySQL。

2.也可能是由于django中默认的MySQL驱动程序为MySQLdb,我们没有将其修改为PyMySQL。

解决:

安装PyMySQL:

pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

使用 pymysql 替代默认的MySQL数据库驱动程序 MySQLdb,在项目目录下的__init__.py 文件中添加如下代码:

from pymysql import install_as_MySQLdb
install_as_MySQLdb()


5 RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods

解决办法1:重启mysql服务

net stop mysql
net start mysql

解决方法2:安装cryptography包

pip install cryptography -i https://pypi.tuna.tsinghua.edu.cn/simple

6 redis.exceptions.AuthenticationError: Authentication required. / django_redis.exceptions.ConnectionInterrupted: Redis AuthenticationError: Authentication required.

原因:

Django项目在配置redis(设置了访问密码)数据库时,没有配置访问redis数据库的密码。

解决:

在CACHE配置中的OPTIONS中添加访问redis数据库的密码。

"PASSWORD": "123123",  # 访问redis数据库的密码
# 配置redis数据库
CACHES = {
    "default": {  # 默认情况下使用redis中的哪个数据库
        # 使用redis作为缓存
        "BACKEND": "django_redis.cache.RedisCache",
        # redis 数据库所在的主机地址 端口号 选择第几个数据库
        # 默认情况下使用 0 号库
        "LOCATION": "redis://192.168.93.130:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD": "123123",  # 访问redis数据库的密码
        }
    }
}

7 django.core.exceptions.ImproperlyConfigured: The included URLconf '<module ‘apps.register.urls’ from … does not appear to have any patterns in it. If you see the ‘urlpatterns’ variable with valid patterns in the file then the issue is probably caused by a circular import.

原因:

在Django项目的总路由配置文件中配置了项目子应用的子路由,但是在子应用的路由配置文件中没有路由配置(子应用路由配置文件内容为空).

解决:

在子应用的子路由配置文件中添加urlpatterns配置即可:

from django.urls import path, include
urlpatterns = [
]

8 django.core.exceptions.ImproperlyConfigured: Cannot import ‘register’. Check that ‘apps.register.apps.RegisterConfig.name’ is correct.

原因:

导包的路径书写错误,django项目找不到对应的文件

解决:

将导包时候的路径填写正确即可

在项目的全局配置文件中打印查看项目的导包路径:

import sys
print(sys.path)  # 查看项目当前的导包路径
print(BASE_DIR)


9 RuntimeError: You called this URL via POST, but the URL doesn’t end in a slash and you have APPEND_SLASH set. Django can’t redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:9999/user/smsVerificationCode/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.[14/Nov/2022 18:33:34] “POST /user/smsVerificationCode HTTP/1.1” 500 74611

原因:

通过POST调用了这个URL,URL没有以斜杠结尾,即请求的URL没有以 / 结尾

解决:

1.在django项目的项目设置 settings.py 文件中设置:

# 取消URL一定以斜杠结尾
APPEND_SLASH=False

2.在请求的URL后添加 /

10 TypeError: init() missing 1 required positional argument: 'on_delete

报错:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

原因:

django升级到2.0之后,表与表之间关联的时候必须写"on_delete"参数,否则会报错

来源:【异常】TypeError: init() missing 1 required positional argument: ‘on_delete‘

使用的是Django2.0以上的版本,在添加实体外键的时候,2.0以前的版本是默认级联删除的,在2.0以上的版本要加上:

models.ForeignKey(“表名”, on_delete=models.CASCADE)

之后再创建迁移文件,执行命令行就不会报错了

来源:Django运行创建迁移文件报错:TypeError: init() missing 1 required positional argument: ‘on_delete’

子应用没有进行注册,生成迁移文件会报错:



























ModuleNotFoundError: No module named 'users'
ImproperlyConfigured(django.core.exceptions.ImproperlyConfigured: 
Cannot import 'users'. 
Check that 'meiduo_mall.apps.users.apps.UsersConfig.name' is correct.

子应用没有创建在项目根目录下

Forbidden (Origin checking failed - http://localhost:8080 does not match any trusted origins.): /user/register/

跨域 注释csrf

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
12天前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
|
12天前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
12天前
|
搜索推荐 前端开发 数据可视化
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
本文介绍了一个基于Python协同过滤算法的旅游景点推荐系统,该系统采用Django框架、MySQL数据库、Bootstrap前端和echarts数据可视化技术,旨在为用户提供个性化的旅游推荐服务,提升用户体验和旅游市场增长。
基于Python协同过滤的旅游景点推荐系统,采用Django框架,MySQL数据存储,Bootstrap前端,echarts可视化实现
|
13天前
|
监控 BI Python
python django教学质量评价系统,实现学生、教师、管理员不同角色管理
本文介绍了一个基于Django框架开发的教学质量评价系统,该系统为学生、教师和管理员提供了不同角色的管理和评价功能,实现了教学质量的全方位评估和管理,旨在提高教育质量和促进教学改革。
python django教学质量评价系统,实现学生、教师、管理员不同角色管理
|
12天前
|
数据采集 自然语言处理 监控
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
本文介绍了一个基于Python Django框架开发的新媒体网络舆情数据爬取与分析系统,该系统利用Scrapy框架抓取微博热搜数据,通过SnowNLP进行情感分析,jieba库进行中文分词处理,并以图表和词云图等形式进行数据可视化展示,以实现对微博热点话题的舆情监控和分析。
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
|
12天前
|
人工智能 BI 数据处理
【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管理员三种
本文介绍了一个基于Python开发的医院挂号管理系统,该系统包含医生、患者、管理员三种角色,旨在优化挂号流程,提高医疗服务质量和管理效率,并通过信息化手段提升患者就医体验和医院运营决策的数据支持能力。
【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管理员三种
|
5天前
|
运维 Devops 测试技术
一个人活成一个团队:python的django项目devops实战
DevOps通过自动化的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠。本文通过一个python的django个人博客应用进行了DevOps的实战,通过DevOps拉通开发和运维,通过应用云效的DevOps平台实现自动化“软件交付”的流程,使得构建、测试、发布软件能够更加地快捷、频繁和可靠,提交研发交付效率。作为个人项目也是可以应用devops提高效率。
17 3
|
12天前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
|
13天前
|
存储 数据可视化 大数据
基于Python Django的大数据招聘数据分析系统,包括数据大屏和后台管理
本文介绍了一个基于Python Django框架开发的大数据招聘数据分析系统,该系统具备后台管理功能和数据大屏展示,利用大数据技术收集和分析招聘市场趋势,帮助企业和招聘机构提高招聘效率和质量。
|
4天前
|
SQL 前端开发 关系型数据库
Python之Web框架Django
Python之Web框架Django
7 0