jqueryはdjangoテンプレートでコールバック

私のdjangoテンプレートでは、URLが私のdjangoビューの1つを指している$ .ajax
jqueryメソッドを使用しています。今、私はこのdjangoビューでrender_to_responseを使用できますか?

def document_status(request):
    if request.method == u'GET':        
        GET = request.GET
        if GET.has_key(u'doc_type') and GET.has_key(u'iqama_no'):
            pass
    json_response = simplejson.dumps({'res':True})
    #return HttpResponse(json_response, mimetype='application/json')
    return render_to_response('tracking/index.html' ) 
ベストアンサー

AJAXはリダイレクトには使用されません。サーバーから非同期でデータを取得するために使用されます。

しかし、本当にリダイレクトしたい場合は、(動作しない)テンプレートをレンダリングする代わりに、リダイレクトしたいURLを含む
HttpResponse を返し、AJAXの success
code>関数は返されたデータを使ってjavascriptからリダイレクトします。

だからjavasciptのコードは次のようになります:

$.ajax({
    url: "",
    data: ,
    success: function(new_url){
        window.location = new_url;
    }
});

そして、Djangoハンドラ:

def document_status(request):
    # Do stuff...
    return "http://url/you/wand/to/redirect/to"

編集

コメントの質問に答えるには、これを行う方法の1つです:

まず、ページAのhtmlテンプレート:

<form action="http://url/of/page/B">
    
</form>

ページAのビューコードは変更する必要がないため、ページBのビューは変更できません。

def page_b_view(request):
    value = request.GET.get('value', '0')  # '0' is default value if not found
    if value = '1':
        # Add some context variables here
    elif value == '2':
        # Add some other context variables here
    return render_to_template(...)

これは、あなたにそれを行う方法や何を検索するかのヒントを与えるはずです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です