2017-01-27 7 views
2

私のプロジェクトでは、order detailページがあります。このページには複数のフォームがあります(返品注文、配送注文など)フォームエラーでDjangoでリダイレクトする方法は?

これらのフォームはそれぞれ異なるビューを使用して処理されます。

たとえば、返品オーダーフォームにはorder_returnビューを呼び出すアクションがあり、ReturnOrderFormが有効な場合はorder_detailにリダイレクトされます。

ReturnOrderFormにエラーがあると問題が発生します。 order_detailに戻ってエラーを表示したいと思います。

今のところ、私はちょうど良い動作しますが、URLはorder_detail URLに変更されていないエラーが発生した場合には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

あなたは、各ビューは、その後も注意してください。この

return get_order_detail_response(request, return_form=return_order_form) 
+0

を返すことができるようになります詳細レスポンスに

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) 

を返すことができる共有方法することができます:要求を確認するif文を'is_valid'は有効なポストデータがなければ決して成功しないので、あなたのコードではメソッドは必要ありません – Sayse

関連する問題