如何在提交表单时将消息传递给页面?

时间:2018-05-06 12:13:42

标签: django django-2.0

当我提交表单时,我想传递消息为"表单已成功提交"到同一页" successs.html"。怎么可能?

class SuccessView(FormView):
    template_name = 'success.html'
    form_class = QuestForm
    success_url='success'   
    def form_valid(self, form):
        ob9=Logs.objects.all()
        for i in ob9:
            logids=i.id
        str(logids)
        q1= form.cleaned_data['ques']
        obj1=Quest.objects.create(logid=logids,status=0,question=q1)
        return super(SuccessView,self).form_valid(form)

2 个答案:

答案 0 :(得分:0)

如果您使用Django的messages framework,就像在呼叫处理过程中的任何时候添加消息一样简单(这会将消息添加到当前的request对象)并将其添加到响应中:

from django.contrib import messages
messages.success("Form successfully submitted")

您可以在致电return super().form_valid(form)之前执行此操作。

在模板中,您需要添加代码以显示消息,当然,文档中的示例将向您显示如何执行此操作。

答案 1 :(得分:0)

django message Framework提供了不同的方法:

 from django.contrib import messages
 messages.add_message(request, messages.INFO, 'Your message', extra_tags='more_tags')
 # extra_tags is optional

messages.success(request,"Your message")

要在模板中检索它,请使用类似

的内容
{% if messages %}
    <ul class="messages">
    {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
    </ul>
{% endif %}