对于DJANGO这类MVC框架来说,路径问题可以称为一个谜一样的东西,很多人因为对路径不知道如何处理而觉得MVC实在是云里雾里不知所云。
本文主要解决django中关于模板路径设置、CSS文件路径设置、JS文件路径设置、图片路径设置等常见问题。文中将templates和media(包含js、css、images目录)放到了项目目录的根目录,更具有一般性质。
设定模板路径
设置模板路径比较简单,只要在setting.py里面的TEMPLATE_DIRS选项里面加上这么一句话即可:
1
2
3
4
5
|
import
os
.
path
TEMPLATE_DIRS
=
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
)
,
'../templates'
)
.
replace
(
'\\'
,
'/'
)
,
)
|
这意味着,你可以在项目的根目录下面,建立一个templates目录,里面放你所有的模板
设定CSS/JS/IMAGES等路径
1、在setting.py里面,加入下面一句话,指定根目录下面的media路径:
1
|
STATIC_PATH
=
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
)
,
'../media'
)
.
replace
(
'\\'
,
'/'
)
|
2、在urls.py里面设定这么一句话,将请求CSS/JS/IMAGES的URL转到该地方
1
|
(
r
'^site_media/(?P<path>.*)$'
,
'django.views.static.serve'
,
{
'document_root'
:
settings
.
STATIC_PATH
}
)
,
|
3、那么在我们的模板里面,现在已经可以用以下方法访问JS/CSS/IMAGES
1
|
<
link
href
=
"/site_media/style/style.css"
rel
=
"stylesheet"
type
=
"text/css"
/
>
|
该方法的一个优点是,不用详细设置JS、CSS、images三个不同的路径,只要设定一个,在模版文件里面,直接指定文件的子目录就可以了,比如图片和JS可以这么写:
<img src=’/site_media/images/a.jpg’>
<script src=’/site_media/js/s.js’> </script>
请看这里,我们并没有在urls.py中指定/site_media/images这样的路径。