Django Forms UpdateView:如何在成功更新后提醒用户?
Django Forms UpdateView: How to alert user after successful update?
我正在使用 django UpdateView 和 cripsy 表单来处理我的表单处理。我想在模型成功更新后(即验证和保存后)在页面上显示警报或弹出窗口。
如果我使用 onSubmit
参数显示警报,这只会在按下提交按钮后显示,但我只希望它在更新有效模型后显示。
有没有不用重写很多 class 方法就可以做到这一点的简单方法?
谢谢。
您需要使用 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 %}
我正在使用 django UpdateView 和 cripsy 表单来处理我的表单处理。我想在模型成功更新后(即验证和保存后)在页面上显示警报或弹出窗口。
如果我使用 onSubmit
参数显示警报,这只会在按下提交按钮后显示,但我只希望它在更新有效模型后显示。
有没有不用重写很多 class 方法就可以做到这一点的简单方法?
谢谢。
您需要使用 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 %}