django模板路径

** 软件环境:** windows7+Python2.7.9+Django1.8.2
今天在学到Django模板的时候,关于setting.py中配置模板路径TEMPLATE_DIRS出现了一些问题。

一、模板应用实例

按照Django模板的指示,将在 HelloWorld 目录底下创建 templates 目录并建立 hello.html文件,整个目录结构如下:

templates01.png

然后向Django说明模板文件的路径,修改HelloWorld/settings.py,添加以下代码:

Template dir

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

二、模板路径问题

然后运行命令:

python manage.py runserver

再访问 http://127.0.0.1:8000/hello/ ,可以看到页面:

templates02.png

** 注意:** 根据错误提示信息,是加载templates的时候出现错误,直接去D:\study\Python2.7\lib\site-packages\django\contrib\admin\templates\hello.html找模板了。

三、解决思路:

1 我把hello.html文件复制到D:\study\Python2.7\lib\site-packages\django\contrib\admin\templates\目录下,再访问 http://127.0.0.1:8000/hello/ ,可以看到页面:

templates03.png

这个结果让我明白问题在于* 模板路径TEMPLATE_DIRS * 。。

2 将templates文件夹放在E:\data_workspace\HelloWorld\HelloWorld目录下。

templates04.png

然后访问http://127.0.0.1:8000/hello/, 问题依然存在。

templates05.png

从上面可以看出,Template Loader没有查找HelloWorld目录。这说明HelloWold没有映射到Django中。
3 修改HelloWorld/settings.py,添加以下代码:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'HelloWorld',
)

4 然后访问http://127.0.0.1:8000/hello/ ,问题解决,理解了模板的绝对路径。

四、其他问题

** 绝对路径 **
在windows下也可以设置成绝对路径,将TEMPLATE_DIRS路径设置为:

TEMPLATE_DIRS = ( ' E:\data_workspace\HelloWorld\HelloWorld\templates ',)

这种情况会出错。
解决方案:
Windows用户必须使用斜杠而不是反斜杠,所以只要需要改为即可

TEMPLATE_DIRS = ( ' E:/data_workspace/HelloWorld/HelloWorld/templates ',)

参考链接:

Django documentation

推荐阅读更多精彩内容