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

 更新时间:2018年08月26日 11:53:15   作者:緣來  
最近在学习Django配置静态文件,下面这篇文章主要给大家介绍了关于Django压缩静态文件的实现方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

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

总结

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

相关文章

  • Python的NLTK模块详细介绍与实战案例

    Python的NLTK模块详细介绍与实战案例

    自然语言处理库NLTK在Python中的应用广泛,提供了分词、词性标注、句法分析等多种功能,本文介绍了NLTK的核心功能、基本概念以及通过具体实战案例(如文本分词、去除停用词、词干提取等)展示了其在NLP任务中的实际应用
    2024-09-09
  • 在keras里面实现计算f1-score的代码

    在keras里面实现计算f1-score的代码

    这篇文章主要介绍了在keras里面实现计算f1-score的代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python 实现的截屏工具

    python 实现的截屏工具

    这篇文章主要介绍了python 如何实现一个截屏工具,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-05-05
  • Python Threading 线程/互斥锁/死锁/GIL锁

    Python Threading 线程/互斥锁/死锁/GIL锁

    这篇文章主要介绍了Python Threading 线程/互斥锁/死锁/GIL锁的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python中if及if-else如何使用

    python中if及if-else如何使用

    在本篇文章里小编给大家整理的是关于python中if及if-else使用方法,需要的朋友们可以参考下。
    2020-06-06
  • Python文件夹与文件的相关操作(推荐)

    Python文件夹与文件的相关操作(推荐)

    下面小编就为大家带来一篇Python文件夹与文件的相关操作(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 如何在Pycharm中制作自己的爬虫代码模板

    如何在Pycharm中制作自己的爬虫代码模板

    当有很多个个网站想要爬时,每个爬虫的代码不一样,但有某种联系,这个时候可以抽出一部分通用的代码制成模板,减少代码工作量。本文将具体介绍如何实现这一模板,需要的可以参考一下
    2021-12-12
  • Win7 64位下python3.6.5安装配置图文教程

    Win7 64位下python3.6.5安装配置图文教程

    这篇文章主要为大家详细介绍了Win7 64位下python3.6.5安装配置的图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • pandas之query方法和sample随机抽样操作

    pandas之query方法和sample随机抽样操作

    这篇文章主要介绍了pandas之query方法和sample随机抽样操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 用python实现学生管理系统

    用python实现学生管理系统

    这篇文章主要为大家详细介绍了用python实现学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论