2

質問: 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))

それは私のために働く!

4

2 に答える 2

3

現在リダイレクトしているURLと同じビューを表示するが、追加のGETパラメーターを使用する別のURLを作成します。このGETパラメーターを使用して、ビューの提供に使用されているテンプレートを変更できます。いずれにせよ、リダイレクトは新しいリクエストと見なされるため、この追加情報をこのリクエストに渡すために何かを行う必要があります。

于 2012-06-18T06:55:11.117 に答える
1

リクエストのコールバックメソッドからリダイレクトURLをjsonデータで取得し、JavaScriptでページからリダイレクトします。

于 2012-06-18T02:48:56.787 に答える