当前位置: 移动技术网 > IT编程>脚本编程>Python > Django压缩静态文件的实现方法详析

Django压缩静态文件的实现方法详析

2018年09月23日  | 移动技术网IT编程  | 我要评论

广州华隆酒店,联合早报薄谋反,n0614

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对移动技术网的支持。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网