- 主要解决的是Django 1.5的问题
- 在所有的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('\\','/'),