Alan Hou的个人博客

Django@Python 3常见问题


Django@Python 3常见问题
环境搭建及常见配置
详情可参见Django环境搭建及开发

# 如果同时安装了Python 2和Pyhton 3要指定版本
mkvirtualenv -p python3 env
或
mkvirtualenv --python=python3路径 env

pip install django mysqlclient
pip install django-crispy-forms django-formtools httplib2

虽然很多领域如机器学习的开发者当前更青睐于Python 2,但Python 3已经被越来越多的开发者们所使用,本文旨在整理Python 3环境下安装最新Django版本所出现的问题,其中有很多内容和Python 2下相似或相同。

1.用户表重写

在继承AbstractUser表重写该类时会提示Reverse accessor for ‘User.*’ clashes with reverse accessor for ‘*.*’

解决这一问题只需要按照你定义的app名称和类名在settings.py中添加如下内容:

此外添加图片时要按照所提示的安装Pillow

MySQL Strict Mode && InconsistentMigrationHistory

2.settings.py常见配置

3. Warning: (1366, “Incorrect string value…)
lib/python3.6/site-packages/django/db/backends/mysql/base.py:101: Warning: (1366, “Incorrect string value: ‘\\xE7\\x94\\xA8\\xE6\\x88\\xB7…’ for column ‘name’ at row *”)
出现以上错误是在执行migrate时报出,原因是代码中存在中文,实际测试并不影响数据表的生成。解决方法首先查看数据库是否使用UTF-8编码(Python 3),然后可尝试在中文字符的引号前添加u或在文件头添加# coding:utf-8(Python 2),报错中的Unicode为“用户”二字,如何进行输出呢?

4. CSRF verification failed. Request aborted.
在form表单内部添加{% csrf_token %}

5.error: command ‘clang’ failed with exit status 1(pymssql)
Failed building wheel for pymssql
MacOS解决方法:

6.安装Pillow缺少zlib的问题

7.django.db.utils.OperationalError: (1050, “Table ‘xxx’ already exists”)

这通常是由于删除 migrations 目录下迁移记录以及django_migrations表中对应内容,但数据表中仍存在该字段所致,在 migrate 时添加–fake 参数可解决这一问题

8.RuntimeError: Model class apps.xxx.models.xxx doesn’t declare an explicit app_label and isn’t in an application in INSTALLED_APPS.

这是由于我将的有 app 提取到 apps 目录下产生的名称冲突所致

9.Google分析等线上才使用的代码如何在线下进行屏蔽?

一种比较简单的方式是通过 debug的配置来进行区分

10.django.db.utils.OperationalError: (1071, ‘Specified key was too long; max key length is 767 bytes’)

 

退出移动版