render_to_response дает TemplateDoesNotExist - PullRequest
8 голосов
/ 24 декабря 2009

Я получаю путь к шаблону, используя

paymenthtml = os.path.join(os.path.dirname(__file__), 'template\\payment.html')

и вызывая его в другом приложении, где paymenthtml копируется в payment_template

return render_to_response(self.payment_template, self.context, RequestContext(self.request))

Но я получаю ошибку

TemplateDoesNotExist в / test-payment-url /

E: \ TestApp \ шаблон \ payment.html

Почему появляется ошибка?

Редактировать: я внес следующие изменения в settings.py, и он может найти шаблон, но я не могу жестко указать путь в процессе производства, какая-либо подсказка?

TEMPLATE_DIRS = ("E:/testapp" )

Ответы [ 4 ]

22 голосов
/ 24 декабря 2009

Кажется, что Django будет загружать шаблоны, только если они находятся в каталоге, который вы определили в TEMPLATE_DIRS, даже если они существуют в другом месте.

Попробуйте это в settings.py:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
# Other settings...
TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, "templates"),
)

и затем в представлении:

return render_to_response("payment.html", self.context, RequestContext(self.request))
# or
return render_to_response("subdir/payment.html", self.context, RequestContext(self.request))

Это будет отображать либо E:\path\to\project\templates\payment.html, либо E:\path\to\project\templates\subdir\payment.html. Дело в том, что они находятся внутри каталога, который мы указали в settings.py.

11 голосов
/ 09 января 2011

Кстати: хитроумно то, что django выдает TemplateDoesNotExist, даже если отображаемый шаблон содержит шаблон, которого не существует - {% include "some/template.html" %} ... это знание стоило мне времени и нервов.

2 голосов
/ 24 декабря 2009

У меня нет здесь django, но я думаю, что вы должны использовать / вместо \\?

Python поможет вам разобраться с косыми чертами в операционных системах

1 голос
/ 24 декабря 2009

Вы уверены , что этот файл существует в вашей системе?

E:\testapp\template\payment.html

Это сообщение об ошибке довольно простое и появляется, когда Django пытается найти файл шаблона по пути в файловой системе и не видит его.

Если файл существует, следующим шагом будет проверка разрешений для этого файла и каталогов, чтобы убедиться, что это не проблема с разрешениями. Если ваш диск E: является подключенным сетевым диском некоторого сетевого ресурса, вам также необходимо проверить разрешения на совместное использование.

...