在django的捣腾过程中发现了一些问题,特记录作为备忘
问题一:关闭DEBUG后,css,js静态无法载入
问题的原因:Django只在开发模式下提供静态文件的服务。开启DEBUG模式时,Django内置的服务器提供静态文件的服务,但关闭DEBUG模式后,Django便不提供静态文件服务了。
解决方案转载YueZheng的博客
1.将静态文件由apache提供文件服务:
编辑/etc/apache2/sites-available/horizon文件:
#Alias /media /opt/stack/horizon/openstack_dashboard/static
Alias /static /opt/stack/horizon/openstack_dashboard/static
建立静态文件链接:
ln -sv /opt/stack/horizon/openstack_dashboard/static /opt/stack/horizon
重启apache:
sudo service apache2 restart
2.使用django.views.static.serve()方法。在URLconf中添加:
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': '/path/to/media'}),
官方文档中评价这种办法:“The big, fat disclaimer”。
3.伪造404页面:使用正确的URL链接404页面模板;
4.改变项目运行方式:
python manage.py runserver --insecure
最后这种是stackoverflow上最受欢迎的方法,确实简单快捷!
问题二:django开发服务器使用https
问题的原因:考虑到捣腾的开发页面有login功能,目前通过异步的方式来进行提交与跳转,想到了密码安全性问题,js是明文传输,所以特学习下如何在django使用https,当然,目前是开发服务器也就是runserver,正式服务器的话就等部署的时候再研究了,哈
首先,pip安装 django-extensions django-werkzeug-debugger-runserver pyOpenSSL这三个包
安装完成后,在settings.py中INSTALLEN_APPS中加入 'werkzeug_debugger_runserver' 'django_extensions'
最后运行服务器,命令:python manage.py runserver_plus --cert server.crt 0.0.0.0:9000
当然,我是关闭掉DEBUG的,所以命令的最后还要加上--insecure
即python manage.py runserver_plus --cert server.crt 0.0.0.0:9000 --insecure