質問: django のページにリダイレクトする方法を教えてください。
だから私は投稿データリクエストを持っています-ajax(jQuery)を介して行われます。これは私の django サーバーに送信され、データが追加 (または削除) され、「データが追加されました」というページが表示されます。
この成功ページは次で始まります。
{% extends request.is_ajax|yesno:"base_ajax.htm,base.htm" %}
これは、リクエストが ajax でない場合はあらゆる種類のヘッダーを追加し、そうである場合はヘッダーを無視する良い方法です。これを追加して、JavaScript の有無にかかわらずサイトが機能するようにしました (もうこれを行う必要はありますか?)
そして、post-redirect-get を追加しました (つまり、ビューの post 部分ではなくreturn render_to_response
、むしろreturn redirect('url here')
そして今、問題はリダイレクトが最初のリクエストが ajax であったことを忘れていることです。そのため、常にページ全体 (ヘッダーとすべて) を div にロードすることになりますが、これは私が望んでいるものではありません。
だから、リダイレクトが ajax リクエストのふりをする必要があることを伝えることができるようにしたいと思います
それ、どうやったら出来るの?
更新:「将来(jetpacksを使用して!)」でこれを読んでいる人へのリダイレクトは、ヘッダー情報を転送しません-https://www.rfc-editor.org/rfc/rfc2616#section-7.1を参照してください
結局、私は行ってこれをしました:
return redirect(self.success_redirect + '/' + str(int(request.is_ajax())))
そして、私がリダイレクトしたビューの場合:
url(r'^editStorySuccess/(?P<ajax>\d+)$',
showAfterCheckingAjax,
{
'template':'stories/editStorySuccess.html'
},
'editStorySuccess'
),
そして showAfterCheckingAjax ビューで私はちょうど持っていました:
if int(ajax):
request.META['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest'
return render_to_response(template, {'user':request.user},
context_instance=RequestContext(request))
それは私のために働く!