Django压缩静态文件的实现方法详析
作者:緣來 发布时间:2023-06-15 05:31:33
django静态文件配置原理
静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。
首先要理解几个概念:
媒体文件:用户上传的文件
静态文件:css,js,image等
开发环境:使用django内置服务器处理静态文件
生产环境:使用apache2/nginx服务器处理静态文件映射
所以在配置时要分清楚开发环境还是生产环境,这个后面会详细介绍。
下面先介绍一下服务器查找静态文件的原理,这样我们才能更好的配置。
引言
在网站开发阶段,对于静态资源文件比如JS,CSS等文件都是未经过压缩合并处理的,这对于访问量巨大的网站来说不仅浪费带宽,而且也会影响网站的访问速度。
django-compressor可以把js/css等静态文件压缩,这样不仅有利于减少网站的请求次数,还能节省网络带宽。
而这篇文章即是介绍使用如何使用Python的Django框架中的压缩组件django-compressor!
下面就介绍如何在Django中集成django-compressor!
安装django-compressor
安装很简单,pip安装下就可以了:
$ pip install django-compressor
然后在'setting'的INSTALLED_APPS中添加
INSTALLED_APPS = [
#others
'compressor'
]
setting配置
首先确保django.contrib.staticfiles
已经包含在INSTALLED_APPS中,django1.6及以上版本是默认包含该app在其中的.
指定STATIC_URL
STATIC_ROOT = os.path.join(SITE_ROOT, 'collectedstatic')
# STATIC_URL是客户端访问静态资源的根路径配置
STATIC_URL = '/static/'
STATICFILES = os.path.join(BASE_DIR, 'static')
配置STATICFILES_FINDERS
默认django会从每个app目录的static子目录下查找静态文件,因此通常情况下你都是将相关静态文件放在各自的app/static目录下。Django怎么知道从app/static目录查找静态文件呢?Django有个默认配置项STATICFILES_FINDERS:
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#other
'compressor.finders.CompressorFinder',
)
添加django-compressor配置:
Django-Compressor开启与否取决于DEBUG参数,默认是COMPRESS_ENABLED 与 DEBUG 的值相反。因为 Django-Compressor 的功能本身是用在生产环境下项目发布前对静态文件压缩处理的。因此想在开发阶段 (DEBUG=True) 的时候做测试使用,需要手动设置 COMPRESS_ENABLED=True
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_CSS_FILTERS = [
#creates absolute urls from relative ones
'compressor.filters.css_default.CssAbsoluteFilter',
#css minimizer
'compressor.filters.cssmin.CSSMinFilter'
]
COMPRESS_JS_FILTERS = [
'compressor.filters.jsmin.JSMinFilter'
]
使用
使用也很简单,模板文件中添加模板标签 <font color="red">{% load compress %}</font>
下面分别是css和js的使用方式
{% load compress %}
{% compress css %}
<link rel='stylesheet' href='{% static 'blog/css/style.css' %}' type='text/css'/>
{% endcompress %}
{% compress js %}
<script type="text/javascript" src="{% static 'blog/js/jquery-3.1.1.js' %}"></script>
{% endcompress %}
接着先运行命令:
$ python manage.py collectstatic --noinput
所有静态资源都将拷贝到STATIC_ROOT指定的目录中。
然后运行命令:
$ python manage.py compress --force
这样就会把压缩后的文件放在 <font color="red">STATIC_ROOT</font>
目录下面,大功告成!!
每次修改了js、css文件后,都需要重新加载最新的文件到 <font color="red">STATIC_ROOT</font> 目录下去,因此需要重新运行命令:
$ python manage.py collectstatic --noinput
$ python manage.py compress --force
来源:https://www.jianshu.com/p/5ed8c31a5e16


猜你喜欢
- 进入python的安装目录, 查看python解释器进入bin目录 # ls python(看一下是否有python解释器版本) # pwd
- 使用php就不一样了,php包含了zlib的链接库,可以直接使用其相关功能,下面是我写的压缩和结压缩swf文件的例子: //没有加入判断sw
- 前言:由于ES6到ES7增加了很多新的语法,新特性的出现使得大家都希望通过新语法来提升自身的开发效率,但在之前的最新的node可能也没有百分
- 今天要处理通知书上的日期,写的一个处理程序,效率可能不是最优的,不过实现功能绝对没问题。注:月份和天要分>10,=10,<10三
- 这篇论坛文章(赛迪网技术社区)主要介绍了配置一个高可用性的MySQL服务器负载均衡群集的具体过程,详细内容请参考下文:本文将告诉你如何配置一
- vscode中安装ms-vscode.go插件后可以开启对go语言的支持,ms-vscode.go插件需要依赖一些工具,安装完成后提示goc
- 在本教程中使用MySQL最新的MySQL服务8.0.11的社区绿色版本进行安装,绿色版为zip格式的包,安装分为以下四步走:第一步:下载My
- 1.建立Recordset对象 代码如下:Dim objMyRst Set objMyRst=Server.C
- 本文实例讲述了Python面向对象class类属性及子类用法。分享给大家供大家参考,具体如下:class类属性class Foo(objec
- PyQt5选项卡控件QTabWidget简介QTabWidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面,通过单击各选
- PyTorch中实现卷积的重要基础函数1、nn.Conv2d:nn.Conv2d在pytorch中用于实现卷积。nn.Conv2d( &nb
- ASP.NET Core必须包含Startup类。它就像 Global.asax 文件,我们传统的 .NET 应用程序。如名称建议的那样,在
- 线程间通信方法 1. 通信方法线程间使用全局变量进行通信 2. 共享
- 本文实例总结了PHP常用字符串操作函数。分享给大家供大家参考,具体如下:/*常用的字符串输出函数** echo() 输出字符串* print
- 1:django-admin.py startproject 项目名2:cd 项目名3:修改setting.py(1):
- 1.简介堆,又称优先队列,是一个完全二叉树,它的每个父节点的值都只会小于或等于所有孩子节点(的值)。 它使用了数组来实现:从零开始计数,对于
- 前言最近参加了大创项目,题目涉及到计算机视觉,学姐发了个修正图像的博客链接,于是打算用这个题目入门OpenCV。分析问题照片中的PPT区域总
- 我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准
- 1. 引用css。这可能是最常见的做法了,对一些特定的元素定义特定的样式。那么使用它,你需要在HTML 页面中加入<link
- 在IE中提供了一个fireEvent方法,顾名思义就是触发某个事件发生的意思。刚开始我以为是会跟平时使用onclick()一样,没想到最近在