注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

郁夫的博客

我爱你们,只是你们不知道!

 
 
 

日志

 
 
 
 

Django 1.4 的静态文件处理  

2012-11-06 16:59:31|  分类: Django |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Django 1.3 增加的新功能 django.contrib.staticfiles。以应对多应用,多组静态文件的情况。

django.contrib.staticfiles 收集你每个应用(和任何指定的其它地方)的静态文件(static files)到单个的位置,使其利于在生产环境使用。

注意:django.contrib.staticfiles来自于以前的第三方应用django-staticfiles,他们是非常相似的。

使用 django.contrib.staticfiles

基本用法

1.放你的静态文件到某处,staticfiles将寻找它们。

   默认在你的setting INSTALLED_APPS中安装的每个django应用里的static/ 子目录中。

   你的项目可能也有一些静态资源不是和特定的应用相关。STATICFILES_DIRS 可以设定一组在装入静态文件时要搜索的目录。默认搜

   索路径为空。看STATICFILES_DIRS 文档怎样追加一个路径列表。

   此外,看 STATICFILES_FINDERS 设定的文档了解staticfiles 寻找你文件的细节。

2.确信django.contrib.staticfiles是包括在你的 INSTALLED_APPS中。

   对于本地部署,如果你使用了Django自带的runserver 或者追加  staticfiles_urlpatterns 在你的URL配置文件,你的静态文件将自动的

   服务在默认的  STATIC_URL  ,即 /static/ 。

3.你可能在你的模板中要引用这些静态文件。最简单的方法是使用包括上下文处理器。像下面的代码:

   <img src="{{ STATIC_URL }}images/hi.jpg" />

   看 Referring to static files in templates 为更多的细节。

部署静态文件的简单步骤

当你准备把你的项目从本地移走而且在其他地方部署时:

1.在setting中用 STATIC_URL 设定你的静态文件发布URL(在大多数情况,默认值/static/就很好)。

2.在setting中用 STATIC_ROOT 设定你用 collectstatic 命令收集的静态文件路径。例如:

  STATIC_ROOT = "/home/jacob/projects/mysite.com/sitestatic"

3.运转 collectstatic 管理命令。

  ./manage.py collectstatic

  这将汇合你的静态文件而且拷贝它们到 STATIC_ROOT 指定的路径。

4.部署这些文件在你的webserver上,配置你的webserver作用这些文件于STATIC_ROOT at STATIC_URL

  Serving static files in production 会叙述一些静态文件的常用部署策略。

这些是基本的。为更多的公共配置选项,请继续读settings, commands的详细参考,还有小部分包括自框架中,看 the staticfiles reference

伺服静态文件在生产环境

总的来说在生产环境布置静态文件是简单的:当静态文件改变时运行collectstatic 命令,将收集到的静态文件的静态文件路径 (STATIC_ROOT)移动到静态文件服务器而且开始服务。

当然,如同所有的部署工作,痛苦在细节。每个生产环境的设置将会有点不同,因此你需要改动基本设置以适应你的需要。下面是一些公共的模式可以帮到你。

如果你想服务静态文件和你的网站在同一个服务器上,基本的修正看上去像下面这样:

.放置你的代码到部署服务器

.在服务器上,运转collectstatic拷贝所有的静态文件到  STATIC_ROOT 。

.让你的 web server 指向STATIC_ROOT 。例如,这儿  how to do this under Apache and mod_wsgi.

有数个方法可以自动完成这个过程,单大多数django设计者是感兴趣  Fabric.

接下来我们将秀一些 fabfiles(Fabric的脚本)的例子,自动部署这些文件,一个fabfile的语法是相当直白的,可以翻阅 Fabric's documentation 了解完整的语法。

一个fabfile文件部署静态文件到一组 web server 应当看上去如下:

from fabric.api import * # Hosts to deploy onto env.hosts = ['www1.example.com', 'www2.example.com'] # Where your project code lives on the server env.project_root = '/home/www/myproject' def deploy_static(): with cd(env.project_root): run('./manage.py collectstatic -v0 --noinput')

 


 

 

 

  

  

  评论这张
 
阅读(878)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017