Django开发过程中遇到的问题和解决方案
1.django向数据库中添加中文时报错
解决方案:创建数据库的时候设置编码格式
2.django的信号使用无法触发信号里的内容
解决方案:在django 1.7后,使用信号时候需要在应用配置类中的ready() 方法中连接。
所以我们需要配置先ready()
需要在以下两个地方写入配置
需要在项目的app.py,init.py两个文件中写入配置
3.django-admin.py:未找到命令
解决方案:将django的安装路径添加到环境变量中,
一般的安装路径在python目录下的\Lib\site-packages\Django-1.8-py2.7.egg\django\bin,
可能有不同,总之在python安装目录下找到django\bin即可。
添加完环境变量后记得重启命令提示符,否则还是提示错误。
4.当我把 DEBUG = True设为False的时候运行 python manage.py runserver 的时候
报错 : CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
解决方案: 在 setting.py 中添加 ALLOWED_HOSTS = [‘127.0.0.1‘, ‘localhost‘]
5.外部机器无法访问本站点
然后在settings里修改ALLOWED_HOSTS = [],
改为ALLOWED_HOSTS = [‘*’,]
6.django解决跨域请求的问题
解决方案:添加中间件,安装django-cors-headers
配置settings.py文件,添加
MIDDLEWARE_CLASSES = (
…
‘corsheaders.middleware.CorsMiddleware’,
‘django.middleware.common.CommonMiddleware’, # 注意顺序
…
)
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
‘*’
)
7.安装Mysql,详细教程:https://blog.csdn.net/bobo553443/article/details/81383194
,遇到出现error 1042,无法正常启动解决方案:https://www.jianshu.com/p/de3adc46c8ec
8.django.db.utils.OperationalError: (1049, "Unknown database 'djangodb'")
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME': 'mysql',
'USER':'root',
'PASSWORD':'root',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
出这个问题是因为在setting.py的配置信息NAME配置错误,改为mysql即可。
然后再执行
9.ImportError: cannot import name 'render_to_response' 解决方法
Django 3.0 已经将 render_to_response 移除了。因为有部分代码在用 render_to_response ,而我们打包镜像的时候没有指定 Django 版本,所以启动时报错了。
(1)方法一
安装指定版本的 Django 版本(3.0以下),如:
pip3 install django==2.1.3
(2)方法二
使用 render 代替 render_to_response。
相同点:都是展示模板页面的。
不同点:render 方法可接收三个参数,一是request参数,二是待渲染的html模板文件,三是保存具体数据的字典参数。它的作用就是将数据填充进模板文件,最后把结果返回给浏览器。render 自动使用RequestContext,而 render_to_response 需要 coding 进去。
return render(request,"information.html",{"name":"test","password":"123456"})
return render_to_response("information.html",{"name":"test","password":"123456"},context_instance = RequestContext(request))
10.Django中html里的语法标签{% dosomething %},“%”与"{” 或者"}"之间不能有空格!
11.发生'staticfiles' is not a registered tag library错误,主要是因为:staticfiles is now deprecated and you have to load it as {% load static %} instead of old way {% load static from staticfiles %}
12.ImportError: No module named 'django.core.urlresolvers',Django 2.0 把原来的 django.core.urlresolvers 包改为了 django.urls包,所以需要把原来的from django.core.urlresolvers import reverse 改为 from django.urls import reverse
13.DoesNotExist at /admin/ Site matching query does not exist.
看了
http://stackoverflow.com/questions/6086852/how-to-fix-the-django-sites-table 说
You don't really need the sites framework if you only run one site from the project, so the easiest fix would be to remove the following item from your INSTALLED_APPS and the error should go away:
'django.contrib.sites'
You can also re-create the missing Site object from shell. Run python manage.py shell and then:
from django.contrib.sites.models import Site
Site.objects.create(pk=1, domain='mdev.5buckchuck.com', name='5buckchuck.com')