Python 如何向django表单发送消息
最初我用PHP编写了一个脚本,因为我把html放在了.PHP文件中,所以在向数据库添加数据时很容易显示消息 现在我想在Django做同样的事情。我有简单的表单和视图来添加数据。当添加完成后,我想在“发送”按钮下显示一些div,其中包含信息,所以我不想加载任何其他模板。我想在同一模板中显示消息,其中是我的表单Python 如何向django表单发送消息,python,django,Python,Django,最初我用PHP编写了一个脚本,因为我把html放在了.PHP文件中,所以在向数据库添加数据时很容易显示消息 现在我想在Django做同样的事情。我有简单的表单和视图来添加数据。当添加完成后,我想在“发送”按钮下显示一些div,其中包含信息,所以我不想加载任何其他模板。我想在同一模板中显示消息,其中是我的表单 没有ajax可以吗?如何做到这一点 将变量传递给模板怎么样 (@views.py) 然后在某处 (@some_template.html) {%if sent%} 废话 {%endif%}
没有ajax可以吗?如何做到这一点 将变量传递给模板怎么样 (@views.py) 然后在某处 (@some_template.html)
{%if sent%}
废话
{%endif%}
编辑:固定打字错误:/将变量传递给模板如何 (@views.py) 然后在某处 (@some_template.html)
{%if sent%}
废话
{%endif%}
编辑:修复了打字错误://p>Django内置了对此类flash消息的消息支持 您可以在视图中添加这样的成功消息:
messages.success(request, 'Profile details updated.')
在模板中,可以按如下方式渲染它:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{%if消息%}
{消息%中的消息为%s}
{{message}}
{%endfor%}
{%endif%}
此链接中记录了这一点:
Django内置了对此类flash消息的消息支持 您可以在视图中添加这样的成功消息:
messages.success(request, 'Profile details updated.')
在模板中,可以按如下方式渲染它:
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{%if消息%}
{消息%中的消息为%s}
{{message}}
{%endfor%}
{%endif%}
此链接中记录了这一点:
如果您使用的是基于类的视图,那么请使用已经实现的mixin
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import Author
class AuthorCreate(SuccessMessageMixin, CreateView):
model = Author
success_url = '/success/'
success_message = "%(name)s was created successfully"
如果您使用的是基于类的视图,那么请使用已经实现的mixin
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from myapp.models import Author
class AuthorCreate(SuccessMessageMixin, CreateView):
model = Author
success_url = '/success/'
success_message = "%(name)s was created successfully"
下面是一个基本版本,它使用基于类的视图显示联系人页面。它在原始表单上方显示一条成功消息 mywebapp/forms.py
### forms.py
from django import forms
class ContactForm(forms.Form):
contact_name = forms.CharField(label='Your Name', max_length=40, required=True)
contact_email = forms.EmailField(label='Your E-Mail Address', required=True)
content = forms.CharField(label='Message', widget=forms.Textarea, required=True)
mywebapp/views.py
### views.py
from django.contrib.messages.views import SuccessMessageMixin
from django.core.mail import EmailMessage
from django.core.urlresolvers import reverse_lazy
from django.template.loader import get_template
from django.views.generic import TemplateView, FormView
from mywebapp.forms import ContactForm
class ContactView(SuccessMessageMixin, FormView):
form_class = ContactForm
success_url = reverse_lazy('contact')
success_message = "Your message was sent successfully."
template_name = 'contact.html'
def form_valid(self, form):
contact_name = form.cleaned_data['contact_name']
contact_email = form.cleaned_data['contact_email']
form_content = form.cleaned_data['content']
to_recipient = ['Jane Doe <info@example.com>']
from_email = 'John Smith <postmaster@example.com>'
subject = 'Website Contact'
template = get_template('contact_template.txt')
context = {
'contact_name': contact_name,
'contact_email': contact_email,
'form_content': form_content
}
content = template.render(context)
email = EmailMessage(
subject,
content,
from_email,
to_recipient,
reply_to=[contact_name + ' <' +contact_email + '>'],
)
email.send()
return super(ContactView, self).form_valid(form)
config/url.py
### config/urls.py
from mywebapp.views import *
urlpatterns = [
url(r'^about/', AboutView.as_view(), name='about'),
url(r'^contact/$', ContactView.as_view(), name='contact'),
url(r'^$', IndexView.as_view()),
]
下面是一个基本版本,它使用基于类的视图显示联系人页面。它在原始表单上方显示一条成功消息 mywebapp/forms.py
### forms.py
from django import forms
class ContactForm(forms.Form):
contact_name = forms.CharField(label='Your Name', max_length=40, required=True)
contact_email = forms.EmailField(label='Your E-Mail Address', required=True)
content = forms.CharField(label='Message', widget=forms.Textarea, required=True)
mywebapp/views.py
### views.py
from django.contrib.messages.views import SuccessMessageMixin
from django.core.mail import EmailMessage
from django.core.urlresolvers import reverse_lazy
from django.template.loader import get_template
from django.views.generic import TemplateView, FormView
from mywebapp.forms import ContactForm
class ContactView(SuccessMessageMixin, FormView):
form_class = ContactForm
success_url = reverse_lazy('contact')
success_message = "Your message was sent successfully."
template_name = 'contact.html'
def form_valid(self, form):
contact_name = form.cleaned_data['contact_name']
contact_email = form.cleaned_data['contact_email']
form_content = form.cleaned_data['content']
to_recipient = ['Jane Doe <info@example.com>']
from_email = 'John Smith <postmaster@example.com>'
subject = 'Website Contact'
template = get_template('contact_template.txt')
context = {
'contact_name': contact_name,
'contact_email': contact_email,
'form_content': form_content
}
content = template.render(context)
email = EmailMessage(
subject,
content,
from_email,
to_recipient,
reply_to=[contact_name + ' <' +contact_email + '>'],
)
email.send()
return super(ContactView, self).form_valid(form)
config/url.py
### config/urls.py
from mywebapp.views import *
urlpatterns = [
url(r'^about/', AboutView.as_view(), name='about'),
url(r'^contact/$', ContactView.as_view(), name='contact'),
url(r'^$', IndexView.as_view()),
]
可以在不同的地方显示消息吗?我的意思是发送按钮下方的肯定消息,标题上方的否定消息,等等。消息具有可以从for循环中的{{message.tags}}获取的标记。这将是类似“成功”或“失败”的字符串。您可以使用它来修改模板中的css样式。这里有更多信息可以在不同的地方显示信息吗?我的意思是发送按钮下方的肯定消息,标题上方的否定消息,等等。消息具有可以从for循环中的{{message.tags}}获取的标记。这将是类似“成功”或“失败”的字符串。您可以使用它来修改模板中的css样式。更多信息请点击这里