Django项目中静态文件的处理方法
2013-02-19 13:48
495 查看
静态文件如CSS, javascript, 图片等文件在django中的配置官方文档写的比较模糊,自己通过实验验证后并整理如下,以防遗忘,目前只整理了关于本地开发中的设置方式,实际发布的配置方式稍后整理。
【第一部分:配置】
步骤一:配置STATICFILES_DIRS
两种情况:
1. 默认情况,静态文件放在app目录下的static目录中,这种情况不用进行特别配置。
2. 静态文件与特定app无关或是多个app共用同一份静态文件,这种情况下将静态文件文件放在任意目录中,那么在settings.py文件中找到STATICFILES_DIRS部分,在其中添加放置静态文件的目录路径,在该部分的注释中说到,需要使用绝对路径,不要使用相对路径,并且无论在任何系统中都使用“/”作为路径分隔符。
步骤二:配置contrib.staticfiles
在settings.py文件中找到INSTALLED_APPS,确保其中包含有’django.contrib.staticfiles',本人使用的是1.4.3版本,该配置以默认加入了,因此也不用特别配置,如果你开发的时候使用的是runserver方式启动服务器,那么你就完成了所有配置,如果你使用其他服务器来开发,则还需要在项目的urls.py中加上如下配置:
【第二部分:在template中使用静态文件】
两种使用方式:
方法1: 使用context processor:
采用这种方式需要有一些额外配置,打开settings.py,确认TEMPLATE_CONTEXT_PROCESSORS中包含有'django.core.context_processors.static',本人使用的是1.4.3版本,打开后没有找到TEMPLATE_CONTEXT_PROCESSORS一项配置,那么自己加上这一项配置也可以生效,代码如下:
配置完成后,在模板中引用静态文件如下:
如果你是手写的views部分方法,那么目前访问还不能生效,还需要在views.py中使用RequestContext来处理request请求后才能生效,如果你使用的generic view(通用视图),那么可以忽略一下配置,因为其中已使用RequestContext自动处理了:
附注: 本人亲自试验过这种配置方式,但最终请求url地址有点诡异,暂时未找到原因和解决方法,因此这种方法需继续测试,慎用!
方法2: 使用template标签的方式:
这种方式比较简便,在本人开发过程中也比较易用,不用额外配置,也不用在每个view中添加RequestContext,在template中可以直接使用,示例代码如下:
上面代码第一种方式是直接硬编码静态文件地址,第二种方式是使用变量方式使用静态文件,使用第二种方式时可以如下代码所示:
实际开发的静态文件部署及访问方式待补充
参考:
官方静态文件设置文档
原文地址:http://lanceverw.iteye.com/blog/1798037
【第一部分:配置】
步骤一:配置STATICFILES_DIRS
两种情况:
1. 默认情况,静态文件放在app目录下的static目录中,这种情况不用进行特别配置。
2. 静态文件与特定app无关或是多个app共用同一份静态文件,这种情况下将静态文件文件放在任意目录中,那么在settings.py文件中找到STATICFILES_DIRS部分,在其中添加放置静态文件的目录路径,在该部分的注释中说到,需要使用绝对路径,不要使用相对路径,并且无论在任何系统中都使用“/”作为路径分隔符。
步骤二:配置contrib.staticfiles
在settings.py文件中找到INSTALLED_APPS,确保其中包含有’django.contrib.staticfiles',本人使用的是1.4.3版本,该配置以默认加入了,因此也不用特别配置,如果你开发的时候使用的是runserver方式启动服务器,那么你就完成了所有配置,如果你使用其他服务器来开发,则还需要在项目的urls.py中加上如下配置:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns # ... the rest of your URLconf goes here ... urlpatterns += staticfiles_urlpatterns()需要注意的是,上面代码的第一行必须放在整个urls文件的第一行,上面代码的最后一行必须放在urls文件的最后一行。
【第二部分:在template中使用静态文件】
两种使用方式:
方法1: 使用context processor:
采用这种方式需要有一些额外配置,打开settings.py,确认TEMPLATE_CONTEXT_PROCESSORS中包含有'django.core.context_processors.static',本人使用的是1.4.3版本,打开后没有找到TEMPLATE_CONTEXT_PROCESSORS一项配置,那么自己加上这一项配置也可以生效,代码如下:
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.static', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', )
配置完成后,在模板中引用静态文件如下:
<img src="{{ STATIC_URL }}images/hi.jpg" />
如果你是手写的views部分方法,那么目前访问还不能生效,还需要在views.py中使用RequestContext来处理request请求后才能生效,如果你使用的generic view(通用视图),那么可以忽略一下配置,因为其中已使用RequestContext自动处理了:
from django.template import RequestContext from django.shortcuts import render_to_response def index(request): return render_to_response('index.html', RequestContext(request))
附注: 本人亲自试验过这种配置方式,但最终请求url地址有点诡异,暂时未找到原因和解决方法,因此这种方法需继续测试,慎用!
方法2: 使用template标签的方式:
这种方式比较简便,在本人开发过程中也比较易用,不用额外配置,也不用在每个view中添加RequestContext,在template中可以直接使用,示例代码如下:
#直接使用 {% load staticfiles %} <img src="{% static "images/hi.jpg" %}" /> #变量方式使用 {% load staticfiles %} <link rel="stylesheet" href="{% static user_stylesheet %}" type="text/css" media="screen"/>
上面代码第一种方式是直接硬编码静态文件地址,第二种方式是使用变量方式使用静态文件,使用第二种方式时可以如下代码所示:
from django.shortcuts import render_to_response def index(request): return render_to_response('index.html', {'user_stylesheet': 'css/user.css'}) #将user_stylesheet加入context传入template进行渲染
实际开发的静态文件部署及访问方式待补充
参考:
官方静态文件设置文档
原文地址:http://lanceverw.iteye.com/blog/1798037
相关文章推荐
- Python + django + pycharm 项目的前端代码的静态文件处理
- Django中,图片显示问题--Django中静态文件处理方法指南
- Django中,图片显示问题--Django中静态文件处理方法指南
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- django对静态文件的处理方法
- 使用Django来处理对于静态文件的请求
- Spring Boot Web 静态文件缓存处理的方法
- [无法读取项目文件xxxx, xxx未能加载项目文件,名称不能以“<”字符(十六进制值 0x3C)开头]异常的处理方法
- Django静态文件处理、中间件、上传文件
- Django项目关闭debug模式后,静态文件无法加载的解决办法
- Django静态文件处理总结
- 使用Django来处理对于静态文件的请求
- [Django学习]静态文件处理
- vue-cli2.x项目优化之引入本地静态库文件的方法
- Django开发服务器无法找到静态文件的解决方法
- 64位系统 IIS7.5 下:HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理 解决方法
- 创建Django项目时,settings的静态文件的配置
- django1.4 关于处理静态文件的问题
- 使用Django来处理对于静态文件的请求
- Django下使用静态文件方法