Устранение неполадок Изображения с помощью шаблонов Django с использованием статических тегов и запроса view.py [duplicate]

Для тех, кто находит это в будущем, я бы не рекомендовал использовать mail. Есть несколько ответов, которые касаются этого, но не из-за этого.

Функция PHP mail не только непрозрачна, но и полностью зависит от того, какой MTA вы используете (то есть Sendmail) для выполнения этой работы. mail будет ТОЛЬКО сообщать вам, не удалось ли MTA принять его (т. е. Sendmail был отключен, когда вы пытались отправить). Он не может сказать вам, была ли почта успешной, потому что она была передана. Как таковой (как детали ответов Джона Конде), вы теперь можете возиться с журналами MTA и надеяться, что он расскажет вам об отсутствии возможности исправить его. Если вы находитесь на общем хосте или не имеете доступа к журналам MTA, вам не повезло. К сожалению, по умолчанию для большинства ванильных инсталляций для Linux обрабатывается так.

Почтовая библиотека ( PHPMailer , Zend Framework 2+ и т. д.) делает что-то очень отличное от mail. То, что они делают, это открыть сокет непосредственно на принимающем почтовом сервере, а затем отправить SMTP-почтовые команды непосредственно через этот сокет. Другими словами, класс действует как собственный MTA (обратите внимание, что вы можете сказать библиотекам использовать mail, чтобы в конечном итоге отправить почту, но я настоятельно рекомендую вам не делать этого).

Что это означает, что вы можете непосредственно видеть ответы с принимающего сервера (например, в PHPMailer вы можете включить вывод отладки ). Больше не гадать, если почта не была отправлена ​​или почему.

Если вы используете SMTP (то есть вы вызываете isSMTP()), вы можете получить подробную расшифровку протокола SMTP, используя свойство SMTPDebug.

Установите этот параметр, включив в свой скрипт такую ​​строку:

$mail->SMTPDebug = 2;

Вы также получаете преимущество лучшего интерфейса. С помощью mail вы должны настроить все свои заголовки, вложения и т. Д. С библиотекой у вас есть специальная функция для этого. Это также означает, что функция выполняет все сложные элементы (например, заголовки).

0
задан Alasdair 17 March 2016 в 00:13
поделиться

2 ответа

Вы можете использовать переменную в теге статического шаблона. Обратите внимание, что вам не нужны {{ или }}

{% static SampleModel.0.propertyValue %} 
4
ответ дан Alasdair 22 August 2018 в 13:48
поделиться
  • 1
    если путь является "images / {{SampleModel.0.propertyValue}}. png" тогда? – user2774555 2 August 2015 в 09:43
  • 2
    Затем вы можете использовать фильтр add : {% static "images"|add:SampleModel.0.propertyValue|add:".png" %}. – Alasdair 4 January 2018 в 19:45

Вы можете использовать любую переменную из своего контекста в тегах Django (для работы с пользовательскими тегами могут потребоваться некоторые корректировки). В вашем случае это прекрасно работает:

{% static SampleModel.0.propertyValue %} 

Эти действия также работают:

{% with my_computed_var=SampleModel.0.propertyValue %}
    {% static my_computed_var %} 
{% endwith %}

{% static some_var|customFilter %}

Для получения дополнительной информации см. документацию об пользовательских тегах это также актуально для тегов по умолчанию Django.

0
ответ дан Maxime Lorant 22 August 2018 в 13:48
поделиться
Другие вопросы по тегам:

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