Django笔记:常见故障排除
Django框架下MySQLdb模块在python3中无法使用的问题的解决方案
由于python3环境下目前还没有官方的mysqldb模块,Django框架中又强制要求使用mysqldb,为了解决这个问题,可以按照以下方法:
原文链接:http://www.cnblogs.com/xwang/p/3727741.html
在应用下的__init__中加入以下两行即可
import pymysql
pymysql.install_as_MySQLdb()
也就是说,用pymysql来代替mysqldb其余均不用修改。
在python2下如果提示mysqldb相关的问题,也可以采用这个方法,用pymysql代替mysqldb
Microsoft Visual C++ 9.0 is required 解决办法
参考:http://blog.csdn.net/sepnineth/article/details/50562708
无法正常安装MySQLdb,提示:pip install mysql-python fails with EnvironmentError: mysql_config not found
解决办法:yum install python-devel mysql-devel
启动Django出现错误提示:django.db.utils.OperationalError: (1130, "Host 'node1' is not allowed to connect to this MySQL server")
原因:这是因为mysql服务器中的mysql权限表设置问题,将user表对应的用户的host设置成%即可。
在命令行下运行python manage.py runserver/python manage.py createsuperuser时提示错误:ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?
原因:
1.没有安装django
2.设置了virtualenv虚拟环境但没有激活虚拟环境
3.django路径没有加入到pythonpath中
4.django版本问题
解决办法:
根据原因逐一排查即可,版本原因的话重装django即可:pip install django==1.11安装过程会主动覆盖原有程序
Linux 下运行Django时提示 No module named _sqlite3
解决:
1,首先安装 sqlite-devel
yum install sqlite-devel
2,重新编译安装Python
./configure
make
make install
来自 <http://blog.csdn.net/chenggong2dm/article/details/24362823>
yum命令升级的时候报错:
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
No module named yum
Please
install a package which provides this module, or
verify that the module is installed correctly.
It's
possible that the above module doesn't match the
current version of Python, which is:
2.7.5 (default, Sep 3 2013, 23:16:48)
[GCC 4.6.3 20120306 (Red Hat 4.6.3-2)]
解决方法:
sudo vim /usr/bin/yum
#修个python所在的路径。比如
#/usr/local/bin/python2.6
来自 <http://www.cnblogs.com/mfrbuaa/p/5166582.html>
Django运行访问项目出现的问题:DisallowedHost at / Invalid HTTP_HOST header
来自 <http://blog.csdn.net/will5451/article/details/53861092>
安装mysqldb 后提示:ImportError DLL load failed: %1 不是有效的 Win32 应用程序
操作系统:win7 64位,安装mysqldb 后提示:ImportError DLL load failed: %1 不是有效的 Win32 应用程序,是由于安装的32位的 MySQL-Python-1.2.3.win32-py2.exe,,只要改成64位版本的就可以了。
如果没有找到,可以使用如下链接下载:
32位:http://download.csdn.NET/detail/seven_zhao/6607621
64位:http://download.csdn.Net/detail/seven_zhao/6607625
也可以在如下地址下载:
http://www.codegood.com/downloads
来自 <http://blog.csdn.net/seven_zhao/article/details/16945043>
Django使用Article.objects.filter(tag__icontains='xxx')查询的时候提示Related Field got invalid lookup: icontains错误
原因:models类Article的tag字段使用的不是普通的Field而是manytomanyField,所以提示错误。
解决办法:对于使用了foreignkey、onetomanyField、manytomanyField的字段,不能直接使用过滤方法,而要采用
"本表字段__关联表的对应字段__过滤条件=xxx"这种查询方法
同样的问题也存在于admin.py的设置中:
This error raised if use search_fields in admin.py. E.x:
class AnotherModel(models.Model):
txt = models.CharField(_('Text'),
max_length=255)
class MyModel(models.Model):
prop = models.ForeignKey(AnotherModel)
改为:
class MyModelAdmin(admin.ModelAdmin):
search_fields = ('prop__txt') #必须使用"本表字段__关联表查询字段"的方式注册
来自 <https://code.djangoproject.com/ticket/2331>
参考文章: https://docs.djangoproject.com/en/1.11/ref/models/querysets/#exact
http://blog.163.com/db_lobster/blog/static/9639092200912033535845/