背景:python和django的版本如图:
然后我通过#django-admin startproject mysite建立一个project叫mysite,然后通过#django-admin startapp learn建立了一个app叫learn。
[问题1]把里面的文件都配置完毕之后,在mysite的一级目录里执行#python manage.py runserver的时候爆出如下错误:
[解决]把learn必须要放在mysite的一级文件夹里。
[问题2]把learn放在mysite的一级文件夹里后,执行#python manage.py runserver,出现如下错误:
[解决]执行#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.
[解决]把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失败,如图:
[解决]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
|
官方解释:
[问题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报错的问题
出现下图的问题:
这个时候,在setting.py文件里的DATABASES字段添加OPTIONS字段,如图:
[问题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