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



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

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

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

问题是当ReturnOrderForm有错误时。我想回到order_detail并显示错误。

现在,我只是在order_return视图中呈现order_detail以防出现错误,这很好用,但网址不会更改为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,
                           ...})

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

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)

最新更新