IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

Django的静态文件服务 总结

雕刻时光 2012-05-28 13:20:39 累计浏览 3,800 次
本机暂存

安装
===============================================
在django1.3+,内置了stataic 模块,只需要在INSTALL_APPS里注释掉相关代码即可,对于1.3以下版本可以使用pip install django-staticfiles ,并把staticfiles添加到INSTALL_APP

配置
===============================================
在settings.py内配置相关变量,
MEDIA前缀表示保存用户上传的文件夹
STATIC前缀表示应用使用到的静态文件的所在文件夹,默认放在应用的static目录下,
如果需要增加静态文件夹,可以使用STATICFILES_DIRS = (‘/another_dir/’,) 元组进行配置

MEDIA_ROOT = ‘/home/dotcloud/data/media/’
MEDIA_URL = ‘/media/’

STATIC_ROOT = ‘/home/dotcloud/data/static/’
STATIC_URL = ‘/static/’
ADMIN_MEDIA_PREFIX = ‘/static/admin/’

在开发时查看MEDIA目录内容
===============================================
可向urls.py追加以下内容::

from hello import settings
if settings.DEBUG == True:
urlpatterns += patterns(”,
(r’^media/(?P<path>.*)$’, ‘django.views.static.serve’,
{‘document_root’: settings.MEDIA_ROOT}),
)

在生产环境下转移各应用 的静态static目录下的内容,由服务器进行静态文件处理
可执行以下命令::

$manage.py collectstatic -noinput

PS,本人认为media目录应该在服务器配置访问权限。

模板使用
===============================================

`django官方文档`_  提到需要配置 TEMPLATE_CONTEXT_PROCESSORS
然后在 模板中这样应用 ::

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

或者使用模板tag::

{% load static %}
<img src=”{% get_static_prefix %}images/hi.jpg” />

处理多个静态文件时可以进一步简化为::
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}

<img src=”{{ STATIC_PREFIX }}images/hi.jpg” />
<img src=”{{ STATIC_PREFIX }}images/hi2.jpg” />

.. note::

我在django1.2下按上面的说明配置无法取得static_url,参考资料修改如下方可。

setttings.py追加入以下代码::

TEMPLATE_CONTEXT_PROCESSORS = (
‘django.core.context_processors.debug’,
‘django.core.context_processors.i18n’,
‘django.core.context_processors.media’,
#’django.core.context_processors.static’,
‘staticfiles.context_processors.static’, #此处为手动安装staticfiles的写法
‘django.contrib.auth.context_processors.auth’,
‘django.contrib.messages.context_processors.messages’,
)

views.py::

from django.template import RequestContext

def index(request):

return render_to_response(‘index.html’,{},context_instance=RequestContext(request))

此后模板页可以使用 **{{ STATIC_URL }}** 变量

.. _django官方文档: https://docs.djangoproject.com/en/1.3/howto/static-files/</path>

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,253)
  2. 配置Nginx+uwsgi更方便地部署python应用 (累计阅读 107,174)
  3. 程序员技术练级攻略 (累计阅读 35,489)
  4. python实现自动登录discuz论坛 (累计阅读 32,842)
  5. python编程细节──遍历dict的两种方法比较 (累计阅读 20,372)
  6. 每个程序员都应该学习使用Python或Ruby (累计阅读 17,923)
  7. Chrome和goagent的配置方法,你懂的 (累计阅读 16,846)
  8. 30分钟3300%性能提升――python+memcached网页优化小记 (累计阅读 13,745)
  9. 使用python爬虫抓站的一些技巧总结:进阶篇 (累计阅读 13,305)
  10. 我的PHP,Python和Ruby之路 (累计阅读 13,151)