Django调试为真时,css加载失败怎么办

  介绍

这篇文章给大家分享的是有关Django调试为真时,css加载失败怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Django上线后,需要把setting.py文件的debug=True改为False,以防暴露代码报错问题。

因为我项目用到css的地方只有管理管理员登陆这块,没有自定义的css等,所以我的css文件夹名称定义成静态

1。更改设置。py文件

STATIC_URL=/静态的   STATIC_ROOT=os.path.join (BASE_DIR & # 39;静态/. ./& # 39;)

STATIC_URL是css的加载路径,项目中如果用到了css的地方,会沿着该路径寻找这个路径下的css文件

STATIC_ROOT是存放所有的静态文件,运行python管理。py collectionstatic命令后,python会自动检索项目所有的目录,把静态的文件夹拷贝到STATIC_ROOT目录下。在部署的时候会用的到。

2。执行下述命令

将所有的所有应用下(包括Django自带的)静态目录下的文件复制到STATIC_ROOT目录下

python  manage.py  collectionstatic

3。修改nginx配置文件

添加下述代码到nginx配置文件中

的位置/static  {   ,,,alias /用户/admin/PythonProject/静态;   ,,,休息;   ,,,}

服务器结果如下

服务器{   ,,,,,,,listen  8011;   ,,,,,,,server_name 本地主机;   ,,,,,,,rewrite  ^//美元,打破;   ,,,,,,,的位置/static  {   ,,,,,,,,,,,alias /用户/admin/PythonProject/静态;   ,,,,,,,,,,,休息;   ,,,,,,,},,,,   ,,,,,,,的位置/{   ,,,,,,,,,,,proxy_pass  http://127.0.0.1:8000;   ,,,,,,,},   }

作用如下:当一个请求(例如,登陆请求http://127.0.0.1:8011/admin/)通过nginx转发时,会首先到下面的位置中,被转发8000到端口,调用Django项目中的管理员登陆接口,登陆接口里面会请求两个css文件,分别是

http://127.0.0.1:8011静态/admin/css/css

http://127.0.0.1:8011静态/admin/css/base.css

这两个请求被上面的nginx配置中的第一个位置匹配到,并且使用别名路径替换位置路径,找到css文件和基础。css文件。

(注意:位置后面配置的路径,如果是以/结尾,那么匹配后的路径将不会带匹配中的字段,不带/结尾,将会带着匹配中的字段,详细的就不再赘述了)

这样,css文件就会被正确的加载上了。

<强>补充:Django项目关闭调试模式后,静态文件无法加载的解决办法

近期在做OpenStack地平线项目的相关开发,OpenStack的整体环境使用DevStack安装,视野开发过程中直接使用命令:

python  manager.py  runserver

开启内置服务器,由于项目中local_settings.py文件中的debug=True,进行开发和调试一直没什么问题。

但是现在需要编写404500等出错页面,在调试模式下出了错都会出现报错页面,无法转向到404或500页面,这时我将local_settings.py中的调试设为false,这时候应该可以转向到404页面。

实验证明确实如此,404和500页面都可以得到,但是出现了新的问题:css和js文件无法加载。

在网上找了找,很快就找到了问题的原因:

Django框架仅在开发模式下提供静态文件服务。

当我开启调试模式时,Django内置的服务器是提供静态文件的服务的,所以css等文件访问都没有问题,但是关闭调试模式后,Django便不提供静态文件服务了。

想一想这是符合Django的哲学的:这部分事情标准服务器都很擅长,就让服务器去做吧!

好的,解决问题的办法也就出现了,我最开始想到的就是,使用项目正式部署是所使用的配置,由apache提供静态文件服务。不过解决问题的方法远不止一种,在stackoverflow上我发现了更有趣的方法。

现在把自己总结的四种方法列在下面,共大家参考:

1。将静态文件由apache提供文件服务(类似正式部署):

编辑/etc/输入/网站/地平线文件:

# Alias /media /opt/栈/地平线/openstack_dashboard/静态的   Alias /static /opt/栈/地平线/openstack_dashboard/静态

建立静态文件链接:

ln  -sv 地平线/opt/栈//openstack_dashboard/static 地平线/opt/栈/

重启apache:

sudo  service  apache2 启动

2。使用django.views.static.serve()方法

在URLconf中添加:

(" # 39; ^ site_media/(?术;path>。*) $ & # 39;,, & # 39; django.views.static.serve& # 39;, {& # 39; document_root # 39;:, & # 39;/路径//媒体# 39;}),

Django调试为真时,css加载失败怎么办