Django常见错误总结

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

ImportError: No module named 'MySQLdb'


解决方法:

1. 安装pymysql模块

2. 在app的__init__.py文件中写入以下内容


    import pymysql

    

    pymysql.install_as_MySQLdb()


----------------------------------------------------------------------------------------------------------------


ImportError: cannot import name 'Thing2Literal'

AttributeError: module 'pymysql' has no attribute 'install_as_MySQLdb'


解决方法:

1. pip3 uninstall PyMySQL3

2. pip3 install -U --force-reinstall pymysql


----------------------------------------------------------------------------------------------------------------


You are trying to add a non-nullable field 'publication_date' to book 

without a default; we can't do that (the database needs something to populate existing rows).

Please select a fix:

 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)

 2) Quit, and let me add a default in models.py


解决方法:

这个错误常见于后期修改了model.py文件,在做数据库同步时报错,只要把这个新增字段允许为空即可!

因为默认字段是非空,所以设置字段允许为空(曾尝试设置default="",migrate同步失败)

示例:publication_date = models.DateField(null=True)


----------------------------------------------------------------------------------------------------------------


pymysql.err.InternalError: (1050, "Table 'app01_authordetail' already exists")


解决方法:

因为错误同步,导致正确的表结构无法同步过去,只能删除旧表再同步,适用于测试数据库。如果数据库中有重要的数据库千万别这么干!

1. 删除app/migrations/下除__init__.py外所有的py文件;

2. 登录数据库删除所有的表;

3. 将数据库中django_migrations表中相关的同步记录删除;

4. 再次同步 python3 manage.py makemigrations; python3 manage.py migrate


----------------------------------------------------------------------------------------------------------------


'QuerySet' object has no attribute 'book_set'


解决方法:

QuerySet没有_set方法,必须是Object才可以,所以使用[0]将对象从列表中取出

示例:

obj = Publisher.objects.filter(name="机械出版社")[0]

print(obj.book_set.all().values("title"))


----------------------------------------------------------------------------------------------------------------

django.db.utils.OperationalError: no such table: django_session


解决方法:

这是因为还没有进行数据库同步,数据库中还没有创建相关联的表

python3 manage.py makemigrations

python3 manage.py migrate


----------------------------------------------------------------------------------------------------------------

RuntimeWarning: DateTimeField received a naive datetime


报错原因:

from django.utils import timezone

In[3]: timezone.now()

Out[3]: 

datetime.datetime(2017, 10, 22, 11, 33, 22, 688117, tzinfo=<UTC>)

In[4]: from datetime import datetime

In[5]: datetime.now()

Out[5]: 

datetime.datetime(2017, 10, 22, 19, 33, 38, 60812)


这是由于Django默认使用的时间都是带时区的,而我们在插入数据时使用的datetime是不带时区的。

解决方法:

方案一:

把setting.py文件中USE_TZ改为false,默认不使用时区

方案二:

        pip3 install pytz

import pytz

datetime.now(tz=pytz.UTC)

导入pytz模块,datetime生成时间时带上时区


----------------------------------------------------------------------------------------------------------------

Got an error creating the test database: (1007, "Can't create database 'test_django_db'; database exists")

Type 'yes' if you would like to try deleting the test database 'test_django_db', or 'no' to cancel: 


原因:

Django test数据库自动生成的数据库字符集是latin1,不是utf8,所以当表中有中文会报错


解决方法:

https://docs.djangoproject.com/en/1.11/ref/settings/#charset

设置test数据库字符集为“utf8”

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'django_db',

        'USER': 'root',

        'PASSWORD': 'mysql',

        'HOST': '',

        'PORT': '',

        'TEST': {'CHARSET': 'utf8', },

    }

}


----------------------------------------------------------------------------------------------------------------

UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list:\


原因:

因为obj.objects.all()的结果是无序的,Paginator分页会出错


解决方法:

在查询结果上加上order_by排序, obj.objects.all().order_by("id")


-----------------------------------------------------------------------------------------------------------------

setting.py文件中设置的时区是"Asia/Shanghai",数据库中存储的时间是UTC时间,模板中按照资料说应该自动渲染成东八区,

但是没有,要么手动给他增加8个小时,要么通过astimezone方法更改它的时区


解决方法(column_data是带时区的时间):

import pytz

from django.utils.timezone import datetime, timedelta


tz = pytz.timezone("Asia/Shanghai")


# 笨方法:

column_data = (column_data + timedelta(hours=8)).replace(tzinfo=tz).strftime("%Y-%m-%d %H:%M:%S %Z")

# 聪明方法:

column_data = column_data.astimezone(tz=tz).strftime("%Y-%m-%d %H:%M:%S %Z")


-----------------------------------------------------------------------------------------------------------------


# 如果手动修改了数据库中的记录,再migration同步时会出错


解决方法:

1. python3 manage.py makemigrations

2. python3 manage.py migrate --fake

本文转自戴柏阳的博客博客51CTO博客,原文链接http://blog.51cto.com/daibaiyang119/2066741如需转载请自行联系原作者


daibaiyang119

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Python
django常见错误
1、The view didn’t return an HttpResponse object. It returned None instead. 检查一下你的view部分的函数或者类有返回值吗?返回语句没有错位吗? 2、django网站第一次执行前一定要先执行migrate命令,再进行makemigrations,如果在执行中有部分model改变了,那么先执行makemigrations,再执行migrate。
1140 0
|
关系型数据库 MySQL 应用服务中间件
|
Python Ubuntu Linux
django 错误问题
(1)ubuntu上运行的django出现No space left on device错误 运行django出现错误信息: [2016-12-24 14:33:24,476 pyinotify ERROR] add_watch: cannot watch /usr/local/lib/python2.7/dist-packages/django/contrib/sessi
1665 0
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
104 4
|
2月前
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
|
13天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
65 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
13天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
43 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
9天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
22 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
25天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
57 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
9天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
28 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台