Django的几个错误解决(不定期更新)

  1. 云栖社区>
  2. 博客>
  3. 正文

Django的几个错误解决(不定期更新)

科技小能手 2017-11-12 03:27:00 浏览943
展开阅读全文

背景:python和django的版本如图:

wKiom1f59A3TddIDAABXiozOC1s107.png

然后我通过#django-admin startproject mysite建立一个project叫mysite,然后通过#django-admin startapp learn建立了一个app叫learn。


[问题1]把里面的文件都配置完毕之后,在mysite的一级目录里执行#python manage.py runserver的时候爆出如下错误:

wKioL1f58hvjl50mAAEh0vVGWP8120.png

[解决]把learn必须要放在mysite的一级文件夹里。



[问题2]把learn放在mysite的一级文件夹里后,执行#python manage.py runserver,出现如下错误:

wKiom1f58x3hg71fAAFaEOXo3yA536.png

[解决]执行#yum install python-sqlite即可。


[问题3]我要在别的电脑上登陆看这台服务器上的页面,应该怎么办?

[解决]#python manage.py runserver 0.0.0.0:8000,然后在浏览器里登陆此服务器的“外网ip网址:8000”即可。


[问题4]出现You're accessing the development server over HTTPS, but it only supports HTTP.

wKiom1gFjiujt-G5AAB8aAWrwOs022.png

[解决]把secure_ssl_redirect这个值由ture改成false。


[问题5]执行python manage.py validate的时候出现“IOError: No translation files found for default language zh-CN.”的错误。

[解决]去settings.py里把LANGUAGE_CODE那一段改成LANGUAGE_CODE = 'zh-Hans',如果使用'zh-Hant'就是繁体中文的意思。


[问题6]python manage.py validate失败,如图:

wKiom1i8z6jR15kHAAAdyHrPanU311.png

[解决]Django 1.7版本以上的改用“python manage.py check”这个命令了。


[问题7]python manage.py check的时候爆“ImportError: cannot import name patterns”错误。

[解决]django在1.8之后就没有patterns这个模块了,需要把文件里的

1
 import patterns, include, url

改成

1
import include, url

官方解释:

https://docs.djangoproject.com/en/1.9/ref/urls/#patterns


[问题8]python manage.py check的时候爆“Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form NetworkAssetForm needs updating.”错误。

[解决]这个因为django 1.8+在forms文件中声明TestModelForm限定了可执行的域(我有一句马卖批一定要对python讲),所以只要添加如下一句就可以了:

1
2
3
4
class NetworkAssetForm(forms.ModelForm):
    class Meta:
        model = NetworkAsset
        fields = '__all__'                #添加这句话


[问题9]启动runserver之后,出现

DisallowedHost at /

Invalid HTTP_HOST header: '外网地址:8000'. You may need to add u'外网地址' to ALLOWED_HOSTS.

这个错误。

[解决]在你的那个project名字文件夹里,找到setting.py,然后找到下面的地方

1
ALLOWED_HOSTS = ['*']        #在里面加上'*'


[问题10]使用uwsgi+nginx启动之后,登陆django发现ImportError: No module named 'xxx',但是使用manage.py却是正常的。

如果之前没有这个情况的话,那么考虑一下project的文件夹权限问题,很有可能是因为权限不正确,导致nginx用户无法访问project文件夹。或者看一下.py文件的权限问题。


[问题11]某服务后端server时不时的connection refused

前面是Nginx,后面是uwsgi,日志中时不时出现下面的内容

1
[error] 54#54: *1644 connect() failed (111: Connection refused) while connecting to upstream, client: 172.18.0.5, server: _, request: "POST /log HTTP/1.1", upstream: "http://[::1]:10000/log", host: "mgt-api"

找了好久也没找到原因,比较确定的是不是后面的uwsgi挂掉了,之后tcpdump抓包,发现每次出现问题的都是一个IPV6的地址,结合上面的日志恍然大悟,原来是Nginx反向代理写的是 localhost 而不是 127.0.0.1 ,而且在host文件中是

127.0.0.1   localhost

::1             localhost

gethostbyname 在多个IP的情况下,返回结果是随机的,导致有时候被解析到了IPV6的地址上了。


[问题12]ImportError: No module named 'bootstrapform'

没装bootstrapform

pip install django-bootstrap-form


[问题13]启动django的时候,出现mysql报错的问题

出现下图的问题:

wKiom1jrTXaRslrcAAA2oYXqdrg378.png

这个时候,在setting.py文件里的DATABASES字段添加OPTIONS字段,如图:

wKiom1jrThny8eSHAABlR8Xnoxg468.png


[问题14]EnvironmentError: mysql_config not found

准备用django框架做个小的Demo,在python manage.py syncdb 时出现了No module named MySQLdb的错误,很明显是因为缺少相关的类库.原以为使用PyCharm安装MySQLdb会很容易(PyCharm–Preferences–Project Interpreter–Python Interpreters–Install 然后搜索mysql,找到MySQL-python安装.)


可是总是安装失败,根据提示查看日志, 提示错误为:EnvironmentError: mysql_config not found,


在stackoverflow上找到解决办法:在PATH里增加 /usr/local/mysql/bin

vim ~/.bash_profile

然后添加:

export PATH=${PATH}:/usr/local/mysql/bin

使更改生效:

source ~/.bash_profile

再次安装mysql-python,就已经成功安装了.


如果上面的方法仍然解决不了问题,直接打开终端,输入


sudo easy_install MySQL-python

安装完成之后可以在Python解释器中测试一下

输入

import MySQLdb #注意大小写!!

如果不报错,就证明安装成功了.



参考资料:http://www.jianshu.com/p/d15188a74104

参考资料:http://www.cnblogs.com/fnng/p/4373108.html

参考资料:http://www.ziqiangxuetang.com/django/django-views-urls.html


 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1859830


网友评论

登录后评论
0/500
评论
科技小能手
+ 关注