Django的静态文件管理

Django是一个动态内容开发框架。其主要擅长的网站动态内容部分,然而一个网站必然要包含css、js等静态内容,这些内容的管理当然就不是Django所擅长的。在真是系统中,我们一般会被这些资源交给更擅长此道的Web Server或其他专用服务器。

然而在开发过程中,毕竟Django连开发服务器都已经准备好了,只需简单的运行manager.py runserver即可,如果还要配置一个Web Server来配合的话,显得就太不专业了。

对此Django提供的方案是,在开发期间由Django托管(由django.views.static.serve视图负责)。每个app都有可能有自己的静态文件,按照高内聚的原则,这些文件应该放到app自身的目录之下。为了方便服务器配置,Django提供了一个manage.py collectstatic工具来将这些静态内容聚合到一个统一目录的功能。 

综上,在Django中管理静态内容应该包括以下几部分的内容:

  1. 在配置文件(settings.py)中,设置将来聚合的静态文件的物理根目录(STATIC_ROOT)和虚拟URL(STATIC_URL)
  2. 在配置文件(settings.py)中,将所有静态文件目录添加到STATICFILES_DIRS中,Django将从这些目录中查找搜集(collectstatic)和对外提供(serve)的静态文件。
  3. 在模板中使用{{STATIC_URL}}来作为静态文件引导节。<script type="text/javascript" src="{{ STATIC_URL }}javascript/utils.js"></script>
  4. 部署到服务器时,修改配置文件(settings.py)DEBUG = False关闭Django对配置文件的托管;配置服务器映射;使用manage.py collectstatic将所有静态文件聚合到STATIC_ROOT目录

需要说明的是,STATIC_ROOT和STATICFILES_DIRS中的路径应该是绝对路径。且STATICFILES_DIRS路径中包含在STATIC_ROOT中,实际上不应该再STATIC_ROOT中手工添加任何内容。

posted @ 2012-09-12 14:31  雨吁的嘘  阅读(391)  评论(1)    收藏  举报