ste*_*vec 1 python django django-forms django-views
我有一些基于类的视图,
如果表单 POST ,我使用Django 消息框架发送 success_message is_valid
。
error_message
如果表单 POST 无效,我还想发送自定义。
很明显如何配置success_message
,只需使用 SuccessMessageMixin 并添加一个“success_message”变量。我已经为 error_message 尝试了相同的方法,但是我的任何尝试都没有在表单页面上显示错误 Flash 消息 - 我的尝试在下面的else:
块中被注释掉了。
向 CBV 发送错误消息似乎是一种非常常见的情况,但我在 Django 文档或在线其他任何地方都找不到任何示例。
有谁知道我怎么能做到这一点?
只是要清楚 - 我不是在谈论添加为特定字段创建的 ValidationErrors。对于工作正常的字段,我有 ValidationErrors。这是指将出现在页面顶部的自定义 Flash 消息。
#views.py
class DocCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
model = Doc
form_class = DocForm
template_name = "doc/doc_form.html"
context_object_name = 'doc'
success_message = 'Doc successfully created!'
error_meesage = "Error saving the Doc, check fields below."
def form_valid(self, form):
form.instance.created_by = self.request.user
return super().form_valid(form)
def form_submit(self, request):
if request.method == 'POST':
form = DocForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('doc-detail'))
else:
# messages.error(self.request, error_message)
# messages.add_message(self.request, messages.ERROR, error_message)
# form = DocForm()
return redirect('doc-detail', pk=post.pk)
Run Code Online (Sandbox Code Playgroud)
#base.html
{% if messages %}
{% for message in messages %}
<div class="alert {% if message.tags %}alert-{{ message.tags }}{% endif %}">
{{ message }}<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span></button></div>
{% endfor %}
{% endif %}
{% block content %}
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)
您可以覆盖form_invalid(…)
方法 [Django-doc]以添加错误消息:
from django.contrib import messages
class DocCreateView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
model = Doc
form_class = DocForm
template_name = "doc/doc_form.html"
context_object_name = 'doc'
success_message = 'Doc successfully created!'
error_message = 'Error saving the Doc, check fields below.'
def get_success_url(self):
return reverse('doc-detail', kwargs={'pk': self.object.pk})
def form_valid(self, form):
form.instance.created_by = self.request.user
return super().form_valid(form)
def form_invalid(self, form):
messages.error(self.request, self.error_message)
return super().form_invalid(form)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1292 次 |
最近记录: |