Django常见BUG处理
Django查看版本
方法一(命令行):
python -m django --version
方法二(交互式):
>>> import django
>>> print(django.VERSION)
Django连接数据库常见问题
1、mysqlclient 1.3.13 or newer is required; you have 0.9.3
准备将 Django 连接到 MySQL,在命令行输入命令 python manage.py makemigrations 后报错: django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
由于 mysqlclient 目前不支持高版本python,出现这个错误之后可以根据错误提示找到文件位置,打开 base.py 文件(Python\lib\site-packages\django\db\backends\mysql\base.py
),找到以下代码:
version = Database.version_info
if version < (1, 3, 13):
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
将 if 语句注释掉之后在执行命令就不会再报错:
version = Database.version_info
# if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
2、Error loading MySQLdb module.
python3 与 Django 连接数据库:Error loading MySQLdb module: No module named ‘MySQLdb’
在 python2 中,使用 pip install mysql-python 进行安装连接MySQL的库,使用时 import MySQLdb 进行使用
在 python3 中,改变了连接库,改为了 pymysql 库,使用pip install pymysql 进行安装,直接导入即可使用
但是在 Django 中, 连接数据库时使用的是 MySQLdb 库,这在与 python3 的合作中就会报以下错误了
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named ‘MySQLdb’
解决方法:在 init.py 文件中添加以下代码即可。
import pymysql
pymysql.install_as_MySQLdb()
# 没找到 install_as_MySQLdb() 这个方法的源码,不过顾名思义应该是让 Django 把 pymysql 当成 MySQLdb 来使用吧
3、AttributeError: ‘str’ object has no attribute ‘decode’
今天在启动django项目是报错AttributeError: ‘str’ object has no attribute ‘decode’,
因为项目需要有python2升级到Python3,在改动的过程中,出现这个错误,下面这个方法可以解决
注意替换自己的django的位置
C:\SoftwareTools\Anaconda\envs\Django\lib\site-packages\django\db\backends\mysql\operations.py
也可以在pycharm中找到此文件,在pycharm中找到下面那个文件夹,里面也有
打开 operations.py
找到错误代码(line146):query = query.encode(errors=‘replace’)
解决方法:把decode改为encode即可。
保存退出