网站开发阶段的静态资源文件一般都是未经过压缩合并处理的,这对于访问量巨大的网站来说不仅浪费带宽,而且也会影响网站的访问速度。django-compressor的作用就是在项目部署的时候对静态文件压缩合并成一个文件。下面先对settings配置文件的相关参数简要介绍在讨论Compressor的如何使用。如果你对setting文件非常了解不妨直接从第二部分开始。
###第一部分:setting配置 早期的django处理静态资源要比较啰嗦,还要配置urlpatterens,不过自从django1.6开始加入了django.contrib.staticfiles
这个内置app后,开发环境下处理静态资源就方便很多。
-
django.contrib.staticfiles
是django的内置(build-in)app,用于处理js,css,images等静态资源。首先确保这个app已经包含在INSTALLED_APPS
中,django1.6默认是包含在其中的。 -
指定
STATIC_URL
,比如:STATIC_URL = '/static/'
STATIC_URL是客户端访问静态资源的根路径,比如:模版中定义的资源路径是:
{% load staticfiles %}
<script src="{% static "js/blog.js" %}"></script>
渲染后的效果是:
<script src="/static/js/blog.js"></script>
3 默认django会从app下的static子目录下查找静态文件,因此通常情况下你都是将相关静态文件独自放在各自的app/static目录下。为什么是这样的呢?django有个默认的配置项STATICFILES_FINDERS
,他的默认值是:
("django.contrib.staticfiles.finders.FileSystemFinder",
"django.contrib.staticfiles.finders.AppDirectoriesFinder")
从上面我们看到有个叫AppDirectoriesFinder的模块,就是复杂在app/static目录下找静态文件的。至于FileSystemFinder我们稍后介绍。
4. 像jquery,bootstrap等这样公用的资源文件都是在多个不同的app中共用的,如果是放在某个app中显得不符python哲学,因此django希望提供了公有的目录来放这些文件,需要用的一个配置参数是:STATICFILES_DIRS
,比如:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
'/var/www/static/',
)
也就是静态文件可以放在磁盘的任何一个位置都可以(只要有权限访问),现在应该明白FileSystemFinder的作用了吧。就是用来查找定义在STATICFILES_DIRS中的静态文件的。
###部署 以上是我们在开发环境下对静态资源的处理过程,那么在生产环境下是怎么处理的呢?还是这样由django自己来处理,那么累死django了,对于静态资源直接由Nginx这样的代理去处理好了。django.contrib.staticfiles
提供非常方便的管理命令用来收集不同目录下的静态资源到一个统一的目录中去。
-
设置
STATIC_ROOT
,这个目录就是存放所有静态资源的地方.STATIC_ROOT="/var/www/foofish.net/static/"
2 运行collectstatic管理命令
python manage.py collectstatic
这个命令会拷贝所有静态资源到STATIC_ROOT目录。
3. 配置一下nginx,让访问/static/路径的请求直接访问STATIC_ROOT就可以了。
location /static {
alias /var/www/foofish.net/static/; # your Django project's static files - amend as required
}
小结
django.contrib.staticfiles是django处理静态文件的内置app,开发阶段无需对静态资源配置繁琐的urlpatterns。STATIC_URL是客户端访问静态资源的根路径。STATICFILES_DIRS告诉django静态资源存放的位置,它由FileSystemFinder解析。STATIC_ROOT是项目部署时所有不同地方的静态资源文件汇总的地方,供nginx直接使用。python manage.py collecstatic命令是收集不同地方的资源文件到STRTIC_ROOT下去。
###第二部分:compressor django compressor 的安装配置非常简单,主要步骤:
安装:
pip install django_compressor
配置:
COMPRESS_ENABLED = True
INSTALLED_APPS = (
# other apps
"compressor",
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.FileSystemFinder',
'compressor.finders.CompressorFinder',)
默认Compress开启与否取决对于DEBUG,默认是COMPRESS_ENABLED与DEBUG的值相反。因为compress的功能本身是用在生产环境下项目发布前对静态文件压缩处理的。因此想在开发阶段(DEBUG=True)的时候做测试使用,需要手动设置COMPRESS_ENABLED=True
使用:
{% load compress %}
#处理css
{% compress css %}
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
<link href="{% static "css/blog-home.css" %}" rel="stylesheet">
<link href="{% static "css/github.css" %}" rel="stylesheet">
{% endcompress %}
#处理js
{% compress js %}
<script src="{% static "js/jquery-1.10.2.js" %}"></script>
<script src="{% static "js/bootstrap.js" %}"></script>
<script src="{% static "js/blog.js" %}"></script>
{% endcompress %}
执行命令:python manage.py compress
,最终文件将合并成:
<link rel="stylesheet" href="/static/CACHE/css/f18b10165eed.css" type="text/css">
<script type="text/javascript" src="/static/CACHE/js/9d1f64ba50fc.js"></script>
相关推荐
解决方法: 1.首先你需要在自己的app下面创建2个目录 ... 您可能感兴趣的文章:django 解决自定义序列化返回处理数据为null的问题django queryset 去重 .distinct()说明django的403/404/500错误自定义页面的配置方式
总的来说,解决Django静态资源404错误的关键在于正确配置`settings.py`中的静态文件相关设置,合理组织静态文件目录,并在部署时进行静态文件的收集和配置Web服务器处理静态文件请求。遵循这些步骤,你应该能成功...
- **配置文件**:创建如`jmeter.conf`的配置文件,根据实际需求配置Nginx监听端口、静态资源路径、日志路径等。 - **Nginx配置示例**: ```nginx server { listen 80; server_name localhost; location / { ...
Django-2.1资源包是一个专为Python开发者设计的Web应用框架,它提供了一整套工具和服务,帮助开发者高效地构建高质量的Web应用程序。Django遵循Model-View-Template (MVT) 设计模式,这与传统的MVC模式相似,但稍有...
django静态文件配置原理 静态文件配置就是为了让用户请求时...在网站开发阶段,对于静态资源文件比如JS,CSS等文件都是未经过压缩合并处理的,这对于访问量巨大的网站来说不仅浪费带宽,而且也会影响网站的访问速
每个应用程序(app)都应该有自己的`static`文件夹,用于存放应用相关的静态资源。例如: ``` -- project -- app1 -- migrations -- static -- css -- js -- images -- templates -- app1 -- index.html --...
### Django视频学习资源知识点 #### 一、Django框架简介 Django是一个开源的Web开发框架,基于Python语言编写而成。它遵循MVC(模型-视图-控制器)设计模式,能够帮助开发者快速构建高性能的网站应用。Django最初...
【django资源】主要涉及到的是Django框架在构建Web应用程序时所采用的一种设计模式——MVP(Model-View-Template)架构,以及它如何实现三层结构。在这个架构中,Django的MVP模式是对传统MVC(Model-View-Controller...
在本文中,我们将深入探讨Django框架中与媒体资源管理相关的知识,特别是在处理FTP、`MEDIA_ROOT`和`MEDIA_URL`方面。Django是Python Web开发的一个流行框架,以其强大的功能和灵活性而闻名,其中包括对静态文件和...
Django提供了内置的静态文件管理机制,用于处理开发和生产环境下的静态资源,如CSS、JavaScript和图片等。以下是解决这类问题的关键步骤和详细解释: 首先,确保`settings.py`文件中的配置正确。`DEBUG`变量应该...
10. **学习资源与实践**:学习Django的过程中,可以参考官方文档、在线教程、视频课程等资源。动手实践是提升技能的关键,可以尝试创建一个简单的博客系统或论坛,逐步理解和掌握Django的各个部分。 以上就是使用...
**静态资源处理** 在Django中,静态资源如CSS、JavaScript和图片文件通常用于增强网页的视觉效果和交互性。Django提供了方便的管理工具来处理这些文件。在settings.py配置文件中,我们需要定义STATIC_URL和...
虽然本文介绍了如何通过Django自身来处理静态文件,但仍然建议在生产环境中考虑使用第三方服务器来处理静态资源,以获得最佳性能和安全性。 此外,还应注意定期更新Django版本,遵循官方文档中的最佳实践,以及合理...
理解Django的静态文件处理机制以及如何在模板中正确引用静态资源是解决“无法找到静态资源文件”问题的关键。在开发过程中,确保静态文件位于正确的位置,并在模板中使用`{% static %}`标签。而在部署时,运行`...
Django静态文件与媒体文件处理 Django信号与事件监听 Django缓存机制与性能优化 Django错误处理与调试技巧 Django部署与生产环境配置 Django高级特性:自定义管理后台 Django高级特性:RESTful API开发 Django高级...
10. **static** 和 **staticfiles**:分别存放未经过处理的静态资源(如CSS、JavaScript文件)和Django处理后的静态资源。 11. **media**:通常用于存储用户上传的文件,如图片或视频。 【核心知识点】: 1. **...
表单处理也是Django的一个强项。通过`forms.py`,我们可以定义基于模型的表单或自定义表单,处理用户输入的数据验证。 对于用户认证和授权,Django提供了一套完整的解决方案,包括用户模型、登录/注销功能以及权限...
### Django静态文件配置详解 #### 一、概述 在Django框架中,处理静态文件是一项基本但重要的功能。静态文件通常包括CSS样式表、JavaScript脚本、图像等资源,它们对于构建网页应用至关重要。在Django中,这些静态...
【Python基于Django教学资源管理系统网站设计源码案例设计】是一个使用Python的Django框架开发的教学资源管理系统的源代码实例。这个项目旨在帮助开发者或学生理解如何利用Django构建一个功能完善的在线教育平台,...