【问题标题】:Django Forms UpdateView: How to alert user after successful update?Django Forms UpdateView:成功更新后如何提醒用户?
【发布时间】:2020-04-15 18:24:31
【问题描述】:
我正在使用 django UpdateView 和 cripsy 表单来处理我的表单处理。我想在模型成功更新后(即验证和保存后)在页面上显示警报或弹出窗口。
如果我使用onSubmit 参数显示警报,这只会在按下提交按钮后显示,但我只希望它在更新有效模型后显示。
有没有一种简单的方法可以在不重写大量类方法的情况下做到这一点?
谢谢。
【问题讨论】:
标签:
python
django
django-forms
django-views
django-crispy-forms
【解决方案1】:
您需要使用 messages framework 。这是一个例子:
# in views.py:
from myapp.forms import ContactForm
from django.views.generic.edit import FormView
class ContactView(FormView):
template_name = 'contact.html'
form_class = ContactForm
success_url = '/thanks/'
def form_valid(self, form):
# This method is called when valid form data has been POSTed.
# It should return an HttpResponse.
form.send_email()
success_message = 'Success! We just sent you an email to confirm'
messages.success(request, success_message)
return super().form_valid(form)
然后,在您的模板中(同样来自the docs):
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}