Django1.4设置CSS/JS/IMAGE访问路径问题

昨天在用做网页的时候发现,在网页上用一般形式添加css/js或者图片的路径不管用(包括相对路径和绝对路径)。原因是在django里,一切资源都是通过URL访问的,也就是说,必须在项目中的url.py中设置对应的访问规则。


For example:
假设你的项目名为:example
项目文件目录: D:\workspace\example\
项目资源目录: D:\workspace\example\media\script
D:\workspace\example\media\css
D:\workspace\example\media\image
那么一般来说我们用以下两种方式都能把上述文件中的内容连接到网页中:
1. 相对路径:
2. 绝对路径:
我只举了javascript文件的例子,其他css和image的请自己查一查。


但是但是!在django中这两种都行不通,因为当你在浏览器中打开你的网页时,django找的是:
http://127.0.0.1/media/script/test.js 或者
http://127.0.0.1/file:D:\workspace\example\media\script\test.js
所以会报未找到templates,或未匹配成功的错误!也就是说,在你运行你的网页时,网页上的所有资源也是通过匹配url.py中的规则在连接资源的。


知道了错误原因,下面给出解决办法:
步骤1:
打开setting文件,在TEMPATE_DIRS中添加以下代码:
import os.path
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), '../templates').replace('\\','/'),   
 
)
以上步骤进行完后,你可以在项目根目录下建立一个名叫“templates”的文件夹,以后我们可以把所有模板(即网页)放于此文件夹下。


步骤2:
在项目目录下建立文件夹“media”,并且在media文件夹中建立3个子文件夹:script, css, image.
再次打开setting.py文件,添加以下代码以指定根目录下的media路径:
STATIC_PATH= os.path.join(os.path.dirname(__file__), '../media').replace('\\','/')


步骤3:
在url.py中的url设置中加入以下规则,将CSS/JS/IMAGE的请求转到该去的地方:
(r'^site_media/(?P.*)$','django.views.static.serve',{'document_root':settings.STATIC_PATH}),
注意,上面我们用了请求的规则是以“site_media/”开头的,所以引用时我们就要用这个规则。下面我给的例子中就能看到。


步骤4:
在模板中添加吧!下面给出三种文件的添加方法,方法可能不唯一,我只用了下面三种:
CSS:
"<link href="/site_media/css/styles.css" rel="stylesheet" type="text/css" />"
Javascript:
"<script src="/site_media/script/jquery.js"></script>"
Image:
"<img src="/site_media/image/temp.gif" alt="temp" />"


注意上面我都用了“/site_media”,原因在步骤3中已经给出~


好了,任务完成~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值