Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何向django表单发送消息_Python_Django - Fatal编程技术网

Python 如何向django表单发送消息

Python 如何向django表单发送消息,python,django,Python,Django,最初我用PHP编写了一个脚本,因为我把html放在了.PHP文件中,所以在向数据库添加数据时很容易显示消息 现在我想在Django做同样的事情。我有简单的表单和视图来添加数据。当添加完成后,我想在“发送”按钮下显示一些div,其中包含信息,所以我不想加载任何其他模板。我想在同一模板中显示消息,其中是我的表单 没有ajax可以吗?如何做到这一点 将变量传递给模板怎么样 (@views.py) 然后在某处 (@some_template.html) {%if sent%} 废话 {%endif%}

最初我用PHP编写了一个脚本,因为我把html放在了.PHP文件中,所以在向数据库添加数据时很容易显示消息

现在我想在Django做同样的事情。我有简单的表单和视图来添加数据。当添加完成后,我想在“发送”按钮下显示一些div,其中包含信息,所以我不想加载任何其他模板。我想在同一模板中显示消息,其中是我的表单


没有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样式。更多信息请点击这里