У меня есть приложение библиотеки Django, на котором у меня есть страница book_detail, на которой пользователь может загрузить / отправить по электронной почте ссылку на pdf книги к себе.
При отправке такого электронного письма (которое отлично работает, электронное письмо). Я хочу отобразить всплывающее окно или сообщение с предупреждением на той же html-странице вместо перенаправления на какую-либо другую страницу.
Вот код views.py:
def send_email(request):
try:
send_mail('Book request', 'email body', settings.EMAIL_HOST_USER, ['xyz@gmail.com'], fail_silently=False)
#this message is not getting displayed in the same html page
messages.add_message(request, messages.SUCCESS, 'Email sent successfully.')
except EmailMessage:
messages.add_message(request, messages.SUCCESS, 'Error has occurred')
HTML-страница book_detail.html code:
......
rest of the code....
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}
Я использую кнопку отправки, чтобы отправить электронное письмо:
urlpatterns = [
path('', views.index, name='index'),
......
path('email_book/', views.send_email, name='email_book'),
]
Произошла ошибка:
Пожалуйста, предложите, что должно быть сделано, есть ли какое-либо другое решение, которое я могу попробовать для отображения окна предупреждения / сообщения на той же HTML-странице, без перенаправления на любую другую страницу.
Спасибо!
ОБНОВЛЕНИЕ:
Поскольку для book_detail присуща сложная маршрутизация URLHTML-страница, сообщения Django действительно отображаются, когда я использовал его на другой HTML-странице:
def otherpage(request):
....
messages.add_message(...)
return render(request, 'other_page.html')