** 软件环境:** windows7+Python2.7.9+Django1.8.2
今天在学到Django模板的时候,关于setting.py中配置模板路径TEMPLATE_DIRS出现了一些问题。
一、模板应用实例
按照Django模板的指示,将在 HelloWorld 目录底下创建 templates 目录并建立 hello.html文件,整个目录结构如下:
然后向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/ ,可以看到页面:
** 注意:** 根据错误提示信息,是加载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/ ,可以看到页面:
这个结果让我明白问题在于* 模板路径TEMPLATE_DIRS * 。。
2 将templates文件夹放在E:\data_workspace\HelloWorld\HelloWorld目录下。
然后访问http://127.0.0.1:8000/hello/, 问题依然存在。
从上面可以看出,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 ',)