django1.5设置模板路径和CSS,JS,image等静态文件路径的方法

在所有的Models、Templates和Views都编好的情况下,怎么在Templates中设置正确的CSS和JS等静态文件的路径成了一个问题。直接引用位置不行,相对引用位置不行,难道只有先把静态文件全部都上传到网上,然后再引用其绝对路径?蛋疼死。
非也。Django有很简单的办法来解决这个问题。在这里我假设你的所有的静态文件都在根目录下的media文件夹中,如果有其他位置,你可以用同样的方法设置,记得设置的时候加上与根目录的相对路径。嗯,大概就下面那个结构就行了。
media
├───css
├───images
└───js
然后打开你的settings.py,对,就那个好多好多要设置要改的文件,对,就那个设置数据库的用户名密码的。找到里面的STATIC_ROOT,把它改成这样:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), ‘../media’).replace(‘\\’,’/’)
意思就是说服务器啊,以后你找我的静态文件就从../media下面开始找哦,绝对找得到哦。
然后,再打开你的主urls.py,对,就是那个让你开一个页面就去加一条的那个哦,在里面再加一条:
(r’^site_media/(?P<path>.*)$’,’django.views.static.serve’,{‘document_root’:settings.STATIC_ROOT}),
意思就是说服务器啊,以后你见到site_media这个路径啊,就去按settings.py那个设置找我的静态文件哦。
然后再打开你的模板们,这下设置加载静态文件是不是可简单了?

<link href="/site_media/style/style.css" rel="stylesheet" type="text/css"/>
<img src=’/site_media/images/picture.jpg’>
<script src=’/site_media/js/javascript.js’> </script>

哦,最后忘了说啦,你的Templates也可以用settings去一条直接设置掉哦:

TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), '../templates').replace('\\','/'),

当然如果你把你的Templates分别存在了不同的路径下,也可以照此法设置的~

TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), '../app1/templates').replace('\\','/'),
TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), '../app2/templates').replace('\\','/'),
TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), '../app3/templates').replace('\\','/'),
打赏

点赞