【发布时间】:2018-12-10 09:18:43
【问题描述】:
我有一个 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 代码:
......
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.html 页面固有的复杂 url 路由,当我在其他一些 html 页面中使用它时,确实会显示 django 消息:
def otherpage(request):
....
messages.add_message(...)
return render(request, 'other_page.html')
【问题讨论】:
标签: django django-email