python - Django 消息未显示在联系表单模板上
问题描述
我的 Django 站点上有一个联系表。当用户单击提交他们的消息时,我试图弹出一个消息框。出于某种原因,我无法获得我正在创建的要显示的消息。我到处寻找,但似乎找不到解决方案。
我已确保已满足在文档中启用消息的所有步骤。 https://docs.djangoproject.com/en/3.0/ref/contrib/messages/
任何帮助建议将不胜感激!
视图.py
from django.shortcuts import render
# add to the top
from .forms import ContactForm
# new imports that go at the top of the file
from django.core.mail import EmailMessage
from django.shortcuts import redirect
from django.template.loader import get_template
from django.contrib import messages
import global_admin
nickname = global_admin.nickname
# our view
def contact(request):
form_class = ContactForm
# new logic!
if request.method == 'POST':
form = form_class(data=request.POST)
if form.is_valid():
contact_name = request.POST.get(
'contact_name'
, '')
contact_email = request.POST.get(
'contact_email'
, '')
form_content = request.POST.get('content', '')
# Email the profile with the
# contact information
template = get_template('contact/contact_template.txt')
context = {
'contact_name': contact_name,
'contact_email': contact_email,
'form_content': form_content,
}
content = template.render(context)
email = EmailMessage(
"New contact form submission",
content,
"email@email.com",
['email@email.com'],
headers={'Reply-To': contact_email }
)
email.send()
messages.debug(request, 'Thanks for reaching out! We will be in contact soon!','')
print(messages.get_messages(request))
return render(request, 'contact/contact.html', {'form': form_class, 'nickname': nickname, 'messages': messages.get_messages(request)})
我的模板,contact.html
{% extends 'homepage/base.html' %}
<!--{% block title %}Contact - {{ block.super }}{% endblock %}-->
<!--this loads all the static items-->
{% load static %}
{% block content %}
{% load crispy_forms_tags %}
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
<div id="contact-div">
<h1>Contact</h1>
<form role="form" action="" method="POST" class="bootstrap4">
{% csrf_token %}
{{ form|crispy }}
<button type="submit">Submit</button>
</form>
</div>
{% endblock %}
解决方案
导入views.py
from django.contrib import messages
messages.success(request, "successfully posted")
推荐阅读
- javascript - 使用 vue 指令访问自定义事件对象
- android - 如何以编程方式知道 Android P 上是否启用了 MobileData?
- python - 打印一个随机的 unicode 字符(不使用 exec)
- javascript - 我可以只使用 Javascript 而不使用我的个人 API 密钥和用户 ID 来使用 Gmail 的 API 吗?
- python - 使用 plt.imshow 实现更快的刷新率
- java - Spring Bean Overriding 在 JpaAuditingRegistrar 中引发错误
- javascript - 添加基于 CSS 样式的事件监听器?
- python - Blender 模态运算符无法插入关键帧和移动对象
- ios - 在特定的 TabBar 中打开 URL
- docker - 制作一个依赖容器并将其卷安装在其他容器上