django模板中使用静态文件的方法
2011-04-21 17:21
1296 查看
要在django中使用css、jpg等文件,要分开两种情况:开发环境及生产环境。对于开发环境,现就CSS文件的使用示范,按如下步骤设置:
1、我的项目目录是:f:/projects/www,我的应用在: f:/projects/www/dakki下,我的静态文件在: f:/projects/www/dakki/styles下,先在settings.py中导入os模块:import os。
2、在settings中添加如下变量:
STATIC_PATH = os.path.join(os.path.dirname(__file__), 'dakki/styles').replace('//','/')
3、然后在项目中的urls.py中的patterns字典内添加如下内容:
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_PATH}),
4、然后可以在模板文件中按html引用外部CSS 文件一样引用你自己的CSS文件:
<link href="/static/base.css" rel="stylesheet" type="text/css"/>
5、注意颜色同样对应的变量。
对于生产环境,应该按这样设置:
先设置settings.py,如下:
import os.path
STATIC_PATH= os.path.join(os.path.dirname(__file__), 'js').replace('\\', '/')
在服务器中设置分不同类型的服务器软件,对于nginx,设置如下:
对于apache,设置如下:
==========================================================================
方法1:
由于在页面中要使用CSS,JS及图片文件这就用到了静态文件处理的问题
Django处理静态文件太烦了,我把步骤贴一下
第一步在项目目录下的settings文件里加一项:
STATIC_PATH='D:/WebSite/Django/myclass/jy0203/media'
里面的值静态文件所在目录
第二步在项目目录下的urls文件里加二行:
from myclass import settings
在 urlpatterns里加一句(r'^site_media/(?P.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
第三步在页面文件里更改静态文件的路径如:
其中jy0203.css是放在D:\WebSite\Django\myclass\jy0203\media\css下的
这样子就可以了
-----------------------------------------------------------------------------------------
方法2:
1.在项目目录下的settings文件里加一项:
STATIC_PATH='./media' #静态文件所在目录
2.在项目目录下的urls文件里加一项:
from myproject import settings #myproject为本工程名
在 urlpatterns里加一句(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
3.在页面文件中,做如下设置:
如果用js,css之类的则在<head>和</head>之间加上:
<link rel="StyleSheet" href="/site_media/wiki/base.css" type="text/css" />
即可
如果用图片,flash之类则
<img src="/site_media/top.bmp"/>
===============================
首先是在开发过程中,如果发布CSSS文件,jpg文件等,需要以下步骤。
第一:在项目的settings.py文件中,确保以下变量:
MEDIA_ROOT = 'E:/media' #你的静态文件的绝对目录,本来应该是用动态的,但是如果用APACHE部署的话,还是绝对路径好
STATIC_PATH="E:/media" #同上
第二:在urls.py文件中做以下工作:
from sjlt import settings
然后再目录urls加入:
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
做完以上2个步骤,就可以在你的模板文件中使用JPG和CSS文件了。注意使用方法是这样的:
def login_view(request):
html="<img src=/site_media/logo.JPG></img>"
return HttpResponse(html)
这样就可以返回整个图片了,一定要在图片前边的路径加上=/site_media
=================================================
以上是普通的静态文件的发布方法,但是在你把DJANGO架设到APACHE上以后,如果你已经启用了django的admin模块,这个时候你就会发现,admin模块是不能被渲染后输出的,也就是说admin里面使用的所有csss,jpg都是无效的。这个时候怎么办呢?需要用到以下技巧:
在apache的配置文件中增加以下代码:
<Directory "C:\Python25\Lib\site-packages\django\contrib\admin\media">
Order Deny,Allow
Allow from all
</Directory>
Alias "/media" "C:\Python25\Lib\site-packages\django\contrib\admin\media"
<Location "/media">
SetHandler None
</Location>
这样你的DJANGO的admin就可以正常工作了。
======================================
一直在寻找产品部署环境和开发环境时,Django静态文件配置的差异化。比如说网站的css js和一些非程序相关的文件,我暂时看成是静态文件。我们怎么正确配置,才能让Django网站解析到静态文件呢?简明来说,要注意两个文件:settings.py url.py。
首先在settings文件中,引用os模块:
import os
然后我们定义一个常量,项目的根目录地址:
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
再者就是给MEDIA_ROOT赋值为:
MEDIA_ROOT= os.path.join(PROJECT_PATH,'static')
(注意,我们的静态文件在根目录下的static文件里,如果文件夹名不一样,join的参数改成 自己起用的名字)
settings.py 配置完了,urls.py呢?如下配置:
from django.conf import settings
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT },name="media"),
^static/(?P<path>.*)$的static,可以随自己喜欢的名字,建议参考Django最佳实践做法。也许urls配置很重要,稍微不小心,url经常解析不到真正的静态文件。之前喜欢使用media,比如^media/(?P<path>.*)$,结果老解析不到静态文件,还瞎捣鼓MEDIA_ROOT,终究还是没有解析成功,后来把media改成static,一下子成功了。注意不一定是static,只要不是media,应该就可以了。很奇怪,不知道是不是Django其他地方用到media了,比如Django的Admin。
最后就是如何在templates里使用静态文件了:
<script type="javascript/text" src="/static/js/config.js"></script>
<link rel="stylesheet" type="text/css" href="/static/css/contents.css"/>
<img src="/static/images/logo.ipg" alt=""/>
使用的时候注意 路径的开头需要加上/
这样的配置,在开发环境中式能正常解析的,在产品部署环境中,只需修改settings文件的
MEDIA_URL
ADMIN_MEDIA_PREFIX
把他们改成实际的域名
MEDIA_URL='http://www.XXX.com/static/'
ADMIN_MEDIA_PREFIX='http://www.XXX.com/static/admin/'
ADMIN_MEDIA_PREFIX后面的admn,可能有点差异,我们是把Django的admin静态文件拷贝到一个名叫admin(static/admin)的文件夹里的。
1、我的项目目录是:f:/projects/www,我的应用在: f:/projects/www/dakki下,我的静态文件在: f:/projects/www/dakki/styles下,先在settings.py中导入os模块:import os。
2、在settings中添加如下变量:
STATIC_PATH = os.path.join(os.path.dirname(__file__), 'dakki/styles').replace('//','/')
3、然后在项目中的urls.py中的patterns字典内添加如下内容:
(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_PATH}),
4、然后可以在模板文件中按html引用外部CSS 文件一样引用你自己的CSS文件:
<link href="/static/base.css" rel="stylesheet" type="text/css"/>
5、注意颜色同样对应的变量。
对于生产环境,应该按这样设置:
先设置settings.py,如下:
import os.path
STATIC_PATH= os.path.join(os.path.dirname(__file__), 'js').replace('\\', '/')
在服务器中设置分不同类型的服务器软件,对于nginx,设置如下:
local ^~ { alias /home/projects_pathname/javascript_path/; access_log off; }
对于apache,设置如下:
<Location "/static/"> SetHandler None Order allow,deny Allow from all </Location> Alias /static /home/projects_pathname/javascript_pathname Alias /static/admin /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media <Location "/static/admin"> SetHandler None Order allow,deny Allow from all </Location>
==========================================================================
方法1:
由于在页面中要使用CSS,JS及图片文件这就用到了静态文件处理的问题
Django处理静态文件太烦了,我把步骤贴一下
第一步在项目目录下的settings文件里加一项:
STATIC_PATH='D:/WebSite/Django/myclass/jy0203/media'
里面的值静态文件所在目录
第二步在项目目录下的urls文件里加二行:
from myclass import settings
在 urlpatterns里加一句(r'^site_media/(?P.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
第三步在页面文件里更改静态文件的路径如:
其中jy0203.css是放在D:\WebSite\Django\myclass\jy0203\media\css下的
这样子就可以了
-----------------------------------------------------------------------------------------
方法2:
1.在项目目录下的settings文件里加一项:
STATIC_PATH='./media' #静态文件所在目录
2.在项目目录下的urls文件里加一项:
from myproject import settings #myproject为本工程名
在 urlpatterns里加一句(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
3.在页面文件中,做如下设置:
如果用js,css之类的则在<head>和</head>之间加上:
<link rel="StyleSheet" href="/site_media/wiki/base.css" type="text/css" />
即可
如果用图片,flash之类则
<img src="/site_media/top.bmp"/>
===============================
首先是在开发过程中,如果发布CSSS文件,jpg文件等,需要以下步骤。
第一:在项目的settings.py文件中,确保以下变量:
MEDIA_ROOT = 'E:/media' #你的静态文件的绝对目录,本来应该是用动态的,但是如果用APACHE部署的话,还是绝对路径好
STATIC_PATH="E:/media" #同上
第二:在urls.py文件中做以下工作:
from sjlt import settings
然后再目录urls加入:
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_PATH}),
做完以上2个步骤,就可以在你的模板文件中使用JPG和CSS文件了。注意使用方法是这样的:
def login_view(request):
html="<img src=/site_media/logo.JPG></img>"
return HttpResponse(html)
这样就可以返回整个图片了,一定要在图片前边的路径加上=/site_media
=================================================
以上是普通的静态文件的发布方法,但是在你把DJANGO架设到APACHE上以后,如果你已经启用了django的admin模块,这个时候你就会发现,admin模块是不能被渲染后输出的,也就是说admin里面使用的所有csss,jpg都是无效的。这个时候怎么办呢?需要用到以下技巧:
在apache的配置文件中增加以下代码:
<Directory "C:\Python25\Lib\site-packages\django\contrib\admin\media">
Order Deny,Allow
Allow from all
</Directory>
Alias "/media" "C:\Python25\Lib\site-packages\django\contrib\admin\media"
<Location "/media">
SetHandler None
</Location>
这样你的DJANGO的admin就可以正常工作了。
======================================
一直在寻找产品部署环境和开发环境时,Django静态文件配置的差异化。比如说网站的css js和一些非程序相关的文件,我暂时看成是静态文件。我们怎么正确配置,才能让Django网站解析到静态文件呢?简明来说,要注意两个文件:settings.py url.py。
首先在settings文件中,引用os模块:
import os
然后我们定义一个常量,项目的根目录地址:
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
再者就是给MEDIA_ROOT赋值为:
MEDIA_ROOT= os.path.join(PROJECT_PATH,'static')
(注意,我们的静态文件在根目录下的static文件里,如果文件夹名不一样,join的参数改成 自己起用的名字)
settings.py 配置完了,urls.py呢?如下配置:
from django.conf import settings
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT },name="media"),
^static/(?P<path>.*)$的static,可以随自己喜欢的名字,建议参考Django最佳实践做法。也许urls配置很重要,稍微不小心,url经常解析不到真正的静态文件。之前喜欢使用media,比如^media/(?P<path>.*)$,结果老解析不到静态文件,还瞎捣鼓MEDIA_ROOT,终究还是没有解析成功,后来把media改成static,一下子成功了。注意不一定是static,只要不是media,应该就可以了。很奇怪,不知道是不是Django其他地方用到media了,比如Django的Admin。
最后就是如何在templates里使用静态文件了:
<script type="javascript/text" src="/static/js/config.js"></script>
<link rel="stylesheet" type="text/css" href="/static/css/contents.css"/>
<img src="/static/images/logo.ipg" alt=""/>
使用的时候注意 路径的开头需要加上/
这样的配置,在开发环境中式能正常解析的,在产品部署环境中,只需修改settings文件的
MEDIA_URL
ADMIN_MEDIA_PREFIX
把他们改成实际的域名
MEDIA_URL='http://www.XXX.com/static/'
ADMIN_MEDIA_PREFIX='http://www.XXX.com/static/admin/'
ADMIN_MEDIA_PREFIX后面的admn,可能有点差异,我们是把Django的admin静态文件拷贝到一个名叫admin(static/admin)的文件夹里的。
相关文章推荐
- 01.Django学习之安装,建立项目,传参,MySQL数据库,静态文件配置和模板的使用
- Django使用模板后无法找到静态资源文件
- django 模板使用静态文件
- Django下使用静态文件方法
- Django(五)在模板中使用静态文件
- django使用js或者图片等静态文件的引用方法
- Django 模板中变量、过滤器、标签的使用方法
- django设置静态文件路径方法
- wordpress教程:检测当前页面使用的哪个模板文件的方法
- Django中在template中使用静态文件
- PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
- django1.8使用表单上传文件的实现方法
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
- django 定制管理页面外观 模板文件不生效的解决方法
- 自学python问题(1)-django使用html引用静态文件
- Django1.8将Debug设置为False时访问不到图片和静态文件方法
- Django使用静态文件css ,js,多媒体
- Django 模板中变量、过滤器、标签的使用方法
- 使用Django来处理对于静态文件的请求
- 使用Spring计时器和velocity模板定时生成静态html/jsp文件