Я не могу воссоздать что-то похожее на то, что вы описываете (похоже на Рамиро, который ответил на билет и тоже не может воссоздать проблему). Если у меня есть два шаблона с одним и тем же базовым именем, разными расширениями, разным содержимым, а также вырезанными и вставленными из вашего кода для отправки электронного письма из представления, я получаю различное содержимое, появляющееся в отправленном письме (в Gmail и проверяя «оригинал»). ).
Вы говорите, что ваши файлы .html и .txt различны, но на самом деле, исходя из всего, что вы говорите, звучит, что ваш файл .html содержит содержимое .txt. У вас есть как загрузчик файловой системы, так и загрузчик каталогов приложений: какой из них должен находить эти файлы? Возможно, в том месте, где ищет другой файл с неправильным содержимым, есть случайный файл?
Некоторые эксперименты в оболочке могут помочь вам в отладке. Загрузите шаблон .html и посмотрите, действительно ли он содержит то, что вы думаете. Например:
>>> from django.template import loader
>>> from pprint import pprint
>>> template = 'emails/dun'
>>> ht = loader.get_template(template+'.html')
>>> pprint(ht.nodelist)
[<Text Node: '<p><strong>Mr. '>,
<Variable Node: user>,
<Text Node: '</strong>: Pay us $ '>,
<Variable Node: amt>,
<Text Node: ' before next Friday.</p>
'>]
Убедитесь, что версия .html отличается от версии .txt:
>>> tt = loader.get_template(template+'.txt')
>>> pprint(tt.nodelist)
[<Variable Node: user>,
<Text Node: ': This is an important me'>,
<Variable Node: amt>,
<Text Node: '.
'>]
Если при загрузке они совпадают, вам нужно выяснить, почему не найден нужный файл шаблона или почему найденный файл имеет неправильное содержимое, и ответ не будет иметь никакого отношения к визуализации. () код. Только если они различаются при загрузке и одинаковы при рендеринге, необходимо будет рассмотреть render ().
ОБНОВЛЕНИЕ: Таким образом, в зависимости от обновления вопроса загруженные шаблоны отличаются друг от друга тем, что каждый расширяет базовый шаблон с разными именами. Поэтому возникает следующий вопрос: отличаются ли эти базовые шаблоны? Изменив мой сценарий восстановления так, чтобы он соответствовал вашему, по крайней мере, поскольку изначально загруженные шаблоны расширяют базовые шаблоны, я все еще не могу воссоздать проблему. Я вижу загруженные разные шаблоны:
>>> from django.template import loader, Context
>>> from pprint import pprint
>>> template = 'emails/dun'
>>> ht = loader.get_template(template+'.html')
>>> pprint(ht.nodelist)
[<ExtendsNode: extends "emails/base.html">]
>>> tt = loader.get_template(template+'.txt')
>>> pprint(tt.nodelist)
[<ExtendsNode: extends "emails/base.txt">]
Это делает по-другому:
>>> c = Context({'user': 'Joe', 'amt': '50.00'})
>>> tt.render(c)
u'\nJoe: This is an important message. You owe us $ 50.00.\n\n'
>>> ht.render(c)
u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xm
lns="http://www.w3.org/1999/xhtml">\n<head>\n<title></title>\n</head>\n<body>\n\n<p><strong>Mr. Joe</strong>: Pay us $ 5
0.00 before next Friday.</p>\n\n</body>\n</html>\n'
Поскольку базовые шаблоны, на которые есть ссылки, имеют разное содержимое:
>>> template = 'emails/base'
>>> ht = loader.get_template(template+'.html')
>>> pprint(ht.nodelist)
[<Text Node: '<!DOCTYPE html PUBLIC "-/'>,
<Block Node: title. Contents: []>,
<Text Node: '</title>
</head>
<body>
'>,
<Block Node: content. Contents: []>,
<Text Node: '
</body>
</html>
'>]
>>> tt = loader.get_template(template+'.txt')
>>> pprint(tt.nodelist)
[<Block Node: content. Contents: []>, <Text Node: '
'>]
>>>