≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > Python

解决Django debug为True时,css加载失败的问题

人气:325 时间:2021-06-10

这篇文章主要为大家详细介绍了解决Django debug为True时,css加载失败的问题,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的雯雯来看看吧!

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

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

1.更改setting.py文件

代码如下:


STATIC_URL=‘/static/‘
STATIC_ROOT=os.path.join(BASE_DIR,'../static/')

Django debug为True时,css加载失败的解决方案

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

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

2.执行下述命令

将所有的所有app下(包括Django自带的)static目录下的文件复制到STATIC_ROOT目录下

代码如下:


python manage.py collectionstatic

Django debug为True时,css加载失败的解决方案

3.修改nginx配置文件

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

代码如下:


location /static {
    alias /Users/admin/PythonProject/static;
    break;
    }  

Django debug为True时,css加载失败的解决方案

server结果如下

代码如下:


server{
        listen 8011;
        server_name localhost;
        rewrite ^/$/ break;
        location /static {
            alias /Users/admin/PythonProject/static;
            break;
        }    
        location /{
            proxy_pass http://127.0.0.1:8000;
        } 
} 

Django debug为True时,css加载失败的解决方案

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

http://127.0.0.1:8011/static/admin/css/login.css

http://127.0.0.1:8011/static/admin/css/base.css

这两个请求被上面的nginx配置中的第一个location匹配到,并且使用alias路径替换location路径,找到login.css文件和base.css文件。

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

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

 

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

 

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

代码如下:


python manager.py runserver

Django debug为True时,css加载失败的解决方案

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

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

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

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

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

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

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

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

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

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

编辑/etc/apache2/sites-available/horizon文件:

代码如下:


#Alias /media /opt/stack/horizon/openstack_dashboard/static
Alias /static /opt/stack/horizon/openstack_dashboard/static

Django debug为True时,css加载失败的解决方案

建立静态文件链接:

代码如下:


ln -sv /opt/stack/horizon/openstack_dashboard/static /opt/stack/horizon

Django debug为True时,css加载失败的解决方案

重启apache:

代码如下:


sudo service apache2 restart

Django debug为True时,css加载失败的解决方案

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

在URLconf中添加:

代码如下:


(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': '/path/to/media'}),

Django debug为True时,css加载失败的解决方案

官方文档中评价这种办法:“The big, fat disclaimer”。

3.伪造404页面:

使用正确的URL链接404页面模板;

4.改变项目运行方式:

代码如下:


python manage.py runserver --insecure

Django debug为True时,css加载失败的解决方案

最后这种是stackoverflow上最受欢迎的方法,确实简单快捷!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持四海网。如有错误或未考虑完全的地方,望不吝赐教。

本文来自:http://www.q1010.com/181/19123-0.html

注:关于解决Django debug为True时,css加载失败的问题的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:python

您可能感兴趣的文章

  • 解决Python之opencv缺陷检测的问题
  • 解决jupyter notebook图片显示模糊和保存清晰图片的操作的问题
  • Python之生成xml文件,以及美化的简单示例
  • Python之UDP实现720p视频传输的操作的简单示例
  • 解决Python之Jupyter notebook 输出部分显示不全的问题
  • Python之保存json文件并格式化的简单示例
  • Python之通配符glob模块的用法示例
  • 解决Jupyter Notebook中文不能显示的问题的简单示例
  • python基础分析之if循环语句的简单示例
  • Python之matplotlib显示图像失真的解决方案用法示例
上一篇:解决jupyter notebook启动后没有token的坑的问题
下一篇:解决Python之opencv缺陷检测的问题
热门文章
  • Python 处理Cookie的菜鸟教程(一)Cookie库
  • python之pandas取dataframe特定行列的简单示例
  • Python解决json.dumps错误::‘utf8’ codec can‘t decode byte
  • Python通过pythony连接Hive执行Hql的脚本
  • Python 三种方法删除列表中重复元素的简单示例
  • python爬虫代码示例
  • Python 中英文标点转换示例
  • Python 不得不知的开源项目解析
  • Python urlencode编码和url拼接实现方法
  • python按中文拆分中英文混合字符串的简单示例
  • 最新文章
    • Python利用numpy三层神经网络的简单示例
    • pygame可视化幸运大转盘的简单示例
    • Python爬虫之爬取二手房信息的简单示例
    • Python之time库的简单示例
    • OpenCV灰度、高斯模糊、边缘检测的简单示例
    • Python安装Bs4及使用的简单示例
    • django自定义manage.py管理命令的简单示例
    • Python之matplotlib 向任意位置添加一个子图(axes)的简单示例
    • Python图像标签标注软件labelme分析的简单示例
    • python调用摄像头并拍照发邮箱的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。