django模板路径

989 查看

软件环境: 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 ',)