为什么在Django中使用模板和CSS的绝对路径?(这不是不好的做法吗?)
在Django中,文档建议使用绝对路径,而不是相对路径。
那么,他们是怎么处理可移植性的问题呢?
如果我的模板在项目文件夹里,那么即使只是重命名文件夹也会导致出错……!
那么,这种做法背后的原因是什么呢?
请解释一下?
2 个回答
0
我从一个Linux桌面环境切换到了Windows笔记本,所以直接写死路径对我来说也不行。
可能有更好的方法来解决这个问题,不过我写了一个函数,把它放在我的settings.py文件的最上面,用来从项目中的相对路径获取绝对路径:
#settings.py
import os
def map_path(directory_name):
return os.path.join(os.path.dirname(__file__), \
directory_name).replace('\\', '/')
这样我就可以这样做:
MEDIA_ROOT = map_path('static')
TEMPLATE_DIRS = (
map_path('templates'),
)
“static”和“templates”文件夹都在我的项目根目录下。希望这对你有帮助。
1
你能发个链接给我看看那份文档吗?
在Django中,你需要在settings.py文件里设置模板的搜索路径(通过TEMPLATE_DIRS这个变量)。然后,在视图里,你可以通过指定模板文件的相对路径来渲染这个模板。这样一来,每当你移动模板文件夹时,只需要修改settings.py就可以了。
至于静态文件,比如CSS文档,Django其实不需要了解它们(除非你通过Django自己来提供静态文件,但这在Django的文档中是不推荐的):你只需要告诉你的网络服务器去哪里找这些文件就可以了。