要在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,设置如下:
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。
ADMIN_MEDIA_PREFIX后面的admn,可能有点差异,我们是把Django的admin静态文件拷贝到一个名叫admin(static/admin)的文件夹里的。