自己在用Django练手的时候,写了如下一个小的网站

│  manage.py
├─accounts
│  │  models.py
│  │  tests.py
│  │  urls.py
│  │  views.py
│  │  __init__.py
│  │
│  └─templates
│      └─accounts
│              detail.html
│              index.html
│              login.html
│              register.html
│
├─my_site
│      settings.py
│      urls.py
│      wsgi.py
│      __init__.py
│
└─templates
        base.html

在写测试时,当测试页面重定向的时候,因为被定向到的页面login.html包含如下语句

{% extends "base.html" %}

使得测试会报错

TemplateDoesNotExist: base.html

这个时候,我的settings.py里的TEMPLATE_DIRS是这个样子的

TEMPLATE_DIRS = (
    'templates'
)

在编辑器Pycharm中,以及代码正常运行时,login.html是可以正常运行的,说明TEMPLATE_DIRS里的指示是对的,但是测试时总会报同样的错,测试代码如下

self.assertRedirects(response, reverse("accounts:login"))

昨天晚上整了很久,也找了很多资料,都没有解决,包括把base.html放到accounts–template–accounts都不行,回去睡了一觉,今天大早来,参考了一下以前做过的一个django项目,里面的TEMPLATE_DIRS是这个样子的

import os
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), '..', 'templates').replace('\\', '/')
)

虽然还不懂是怎么这样就可以了,但是问题起码解决了,先记录下问题,有空在研究下为啥第一种标准方式不行



blog comments powered by Disqus

Published

06 March 2014

Category

tech_world

Tags