如何在Django中重定向表单错误?

时间:2017-01-27 18:45:14

标签: django django-forms django-views

在我的项目中,我有一个order detail页面。此页面有多种形式(退货订单,交货订单等)

使用不同的视图处理每个表单。

例如,返回订单表单的操作会调用order_return视图,如果ReturnOrderForm有效,则会重定向回order_detail

问题在于ReturnOrderForm中存在错误。我想回到order_detail并显示错误。

目前,我只是在order_detail视图中呈现order_return,以防出现错误,效果不错但网址未更改为order_detail网址。我会使用HttpResponseRedirect,但我不知道如何处理错误。

你有什么想法吗?

def order_return(request):
    return_order_form = ReturnOrderForm(request.POST or None)
    order_id = request.POST.get('order_id')
    order = Job.objects.get(id=order_id)

    if request.method == 'POST':
        if return_order_form.is_valid():
            ...
            order.delivery.return_delivery(notes=customer_notes)
            return HttpResponseRedirect(reverse("order_detail", args=(order_id,)))

    return render(request, "ordersapp/order_detail/order-detail.html",
                  context={'return_order_form': return_order_form,
                           ...})

1 个答案:

答案 0 :(得分:1)

您可以创建一个可以返回详细响应的共享方法

def get_order_detail_response(request, contxt=None, **kwargs)
     context = contxt or {}
     context['return_order_form'] = kwargs.get('return_form', ReturnOrderForm())
     return render(request, 'template', context)

然后,每个视图都可以返回此

return get_order_detail_response(request, return_form=return_order_form)