在我的项目中,我有一个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)