gpt4 book ai didi

django - 如果表单无效,则更改 Django CBV 响应的状态代码

转载 作者:行者123 更新时间:2023-12-02 04:13:01 24 4
gpt4 key购买 nike

使用 Django 的基于类的 View ,如果表单无效,我如何在返回响应时将状态代码设置为 400?这在功能 View 中很容易,但 CBV 会以 200 状态响应,而不管表单有效性如何。

class CRMContactsAdd(CreateView):

model = models.Contact
fields = ['name','job_title','phone_number','email_address','notes']
template_name = 'crm/add_contact.html'

def get_success_url(self):
return reverse('CRM-list')+"?show_modal_url="+reverse('CRM-contacts',args=())

def get_context_data(self, **kwargs):
cd = super(CRMContactsAdd,self).get_context_data(**kwargs)
cd['company'] = get_object_or_404(models.Company,pk=self.kwargs['pk'])
cd['title'] = "Add contact to %s" % (cd['company'].name)
return cd

def form_valid(self, form):
contact = form.save(commit=False)
contact.company = get_object_or_404(models.Company,pk=self.kwargs['pk'])
return super(CRMContactsAdd,self).form_valid(form)

我想这样做的原因是我可以很容易地使用状态代码来说明是否在模态窗口中使用表单重新加载顶级窗口或更新模态w/提交的响应表格。

最佳答案

您可以覆盖 form_invalid() 以更改响应的状态代码:

class CRMContactsAdd(CreateView):
def form_invalid(self, form):
response = super().form_invalid(form)
response.status_code = 400
return response

关于django - 如果表单无效,则更改 Django CBV 响应的状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35468500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com