Django常见错误总结

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

原文地址:http://blog.51cto.com/daibaiyang119/2066741

时间: 2024-10-01 05:03:50

Django常见错误总结的相关文章

django 常见错误汇总

File "D:\python\django\mysite\mysite\view.py", line 7 SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xa3 in position 0: invalid start byte 1.SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xa3 in position 0: invalid

如何用 Android Studio 导入开源项目以及常见错误的解决办法

声明:这篇文章完全来自这篇文章,感谢大神的相助.这篇文章纯粹是为了备份. 本篇以Github上最热门的MaterialDesign库,MaterialDesignLibrary来介绍怎样使用Android Sudio导入开源项目的,如果你和我一样刚刚从Eclipse转到AS,那本篇文章非常适合你. 如果不引入任何第三方库,不做自动化分渠道打包等操作,那可以在完全不了解Gradle的情况下进行Android项目的开发.但如果要想导入Github上的热门项目,必须首先熟悉Gradle. 1. Gra

MySQL主从多种架构部署及常见错误问题解析

本文的主要内容有mysql复制原理,mysql一主多从.双主架构的示例解读,以及mysql在主从复制架构实践中的常见错误问题和解决方法. 一 mysql复制原理 1 原理解读 mysql的复制(replication)是异步复制,即从一个mysql实列或端口(Master)复制到另一个mysql实列的或端口(slave):复制操作由3个进程完成,其中2个(SQL进程和I/O进程)在Slave上,另一个在Master上:要实现复制,必须打开Master端的二进制日志(log-bin),log-bi

coreseek常见错误原因及解决方法

coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用 本文为大家整理了coreseek/sphinx中文检索引擎的常见问题和解决方法,感兴趣的同学参考下. Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协

Socket常见错误

一.简介 本文介绍 Socket 连接常见错误.   二.常见错误 1)ECONNABORTED 描述:"software caused connection abort",即"软件引起的连接中止" 原因:当服务和客户进程在完成用于 TCP 连接的"三次握手"后,客户 TCP 发送了一个 RST (复位)   2)ECONNRESET 描述:"connection reset by peer",即"对方复位连接&qu

telnet常见错误及其解决方法

telnet常见错误提示及解决方法 当出现以下问题时,即软件已安装.服务已经启动,查看23号端口却发现,没有此端口,解决方法如下:修改telnet服务配置文件. [[email protected] ~]# rpm -qa telnet* telnet-server-0.17-48.el6.x86_64 telnet-0.17-48.el6.x86_64 [[email protected] ~]# service xinetd start 正在启动 xinetd: [[email protec

Linux 源码安装apache 与常见错误解决

文档原位置 一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级. 升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包(谨慎!小心).下面是使用源代码的方式行,它们的下载路径为:(~_~)这里不再说到那里下载了,相信你有能力找的到的,呵呵 2.安装依赖的软件包(当然这里可以认为成需要的编译环境咯!) yum -y install pcre-devel yum -y install  "Developmen

iOS开发——错误总结篇&amp;开发中常见错误和警告总结(三十三)

开发中常见错误和警告总结(三十三) 动画冲突 错误: Unbalanced calls to begin/end appearance transitions for <uivewcontroller> 解决方法1:去掉动画 解决方法2:监听当前view的动画是否完成 解决方法就是,加一个BOOL型的变量,检查是否在做动画. 1 2 if (transiting) { 3 return; 4 } 5 transiting = YES; 6 [self transitionFromViewCon

Git在开发android系统时常用的技巧及常见错误解决方案

Git常用的技巧及常见错误解决方案 项目管理工作 repo 常用命令 ==目标== 了解repo工作原理及常用的repo命令 Git 日常使用的命令,常见问题及解决方案 ==关键词== Repo , Git ==工作指南== == <big>Repo</big> == Android代码其实是由若干个git 工作组织在一起的,repo 是一个便于整体管理这些项目的脚本. 拉代码时需要用到几个步骤,分别对几个步骤进行阐述一下,网上有很多repo 的使用方法,但是对其工作原理描述的并不