render_to_response дает TemplateDoesNotExist

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

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\template\payment.html

Почему ошибка прибывает?

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

TEMPLATE_DIRS = ("E:/testapp" )
8
задан John Debs 23 December 2009 в 21:33
поделиться

3 ответа

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

Попробуйте это в настройках.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.

.
22
ответ дан 3 November 2019 в 12:49
поделиться

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

python помогает вам с косая черта в операционных системах

.
2
ответ дан 3 November 2019 в 12:49
поделиться

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

E:\testapp\template\payment.html

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

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

.
1
ответ дан 3 November 2019 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: