理解django.contrib.staticfiles
Django 1.3 包含了一个新的 APP django.contrib.staticfiles
来帮助开发者管理渲染页面所需的js、css 等静态文件。在 1.3 之前,所有的静态文件都是用 MEDIA_URL
和 MEDIA_ROOT
来控制的。为了和用户上传的文件作区分,staticfiles
的使我们可以将静态文件分配到 APP 目录或任意你指定的目录,分发 APP 时就更为方便了。
MEDIA_XXX 和 STATIC_XXX 配置项的区别
MEDIA_XXX
配置项用来管理用户上传的文件。通常经由FileFields
字段上传它们保存在settings.MEDIA_ROOT
指定的目录下,通过settings.MEDIA_URL
指定的路径访问;STATIC_XXX
配置项用来管理静态资源文件。CSS / JS
文件、png/jpg
图片等 app 提供的静态资源。它们通过manage.py collectstatic
命令汇集到settings.STATIC_ROOT
目录,并通过settings.STATIC_URL
指定的路径访问。
使用 staticfiles
STATIC_ROOT 配置项
STATIC_ROOT
被用来指定执行 manage.py collectstatic
时静态文件存放的路径。在生产环境下,集中存放静态资源有用利于使用 Lighttpd / Nginx 托管静态资源。为了方便调试,通常设置如下:
SITE_ROOT = os.path.dirname(os.path.abspath(__file__))
SITE_ROOT=os.path.abspath(os.path.join(SITE_ROOT,'../'))
STATIC_ROOT = os.path.join(SITE_ROOT,'collectedstatic')
STATIC_URL 配置项
在 Django 模板中,我们可以引用 {{ STATIC_URL }}
变量避免把路径写死。通常设置如下:
STATIC_URL='/static/'