2016-11-30 16 views
-1

この単純なコードをうまく動作させるために努力していますが、まだできません。他の複数のリンクを通過しました。何が間違っているのか分かりません。私はちょうどajax postをdjangoビューに呼び出さなければならないjavacript関数submitData()を持っています。 djangoビューは、基本的には、要求がpostかどうかをチェックする必要があります。そうであれば、別のページにリダイレクトする必要があります。djangoビューのポストajax呼び出しの後に別のページにリダイレクト

私のjavascriptの機能submitData()は以下のとおりであり、csrfトークンをpostリクエストとともに送信するコード部分を追加しました。私views.py

function submitData() 
    { 
     $.post('/loggedin/',{"fname":"name1","lname":"name2"},function(data){ 
     alert("Back from views.py"); 

     }); 
    } 

$(function() { 
     $.ajaxSetup({ 
      headers: { "X-CSRFToken": getCookie("csrftoken") } 
     }); 
    }); 

function getCookie(c_name) 
    { 
     if (document.cookie.length > 0) 
     { 
      c_start = document.cookie.indexOf(c_name + "="); 
      if (c_start != -1) 
      { 
       c_start = c_start + c_name.length + 1; 
       c_end = document.cookie.indexOf(";", c_start); 
       if (c_end == -1) c_end = document.cookie.length; 
       return unescape(document.cookie.substring(c_start,c_end)); 
      } 
     } 
     return ""; 
    } 

、私は次のコード、

def loggedin(request): 
    if request.method == "POST": 
     fname = request.POST.get('fname') 
     print fname #The code comes here, prints the fname 
     args = {} 
     args.update(csrf(request)) 
     return render_to_response('loggedout.html',args,context_instance=RequestContext(request)) #This does not redirect to a different page 
    print "outside in loggedin" 
    args = {} 
    args.update(csrf(request)) 
    return render_to_response('loggedin.html',args, RequestContext(request)) 

post呼び出しが行われた場合、FNAMEが印刷されますが、機能render_to_response()によって起こると仮定されるリダイレクトは起きていないを持っています。代わりにpostコールが返され、postコールの「statements.pyから戻る」という警告ステートメントが警告されます。私は何が欠けているのか分からない。

+0

'render_to_response'のコードを表示してください – Mairaj

+0

' views.py'の 'loggedin()'関数は 'render_to_response'()を持っています。私はちょうどdjangoのdjango.shortcutsライブラリによって与えられた 'render_to_response()'関数を使用しています。コードは? – nidHi

+0

ここにはリダイレクトは一切ありません。 –

答えて

2

postがjavascriptを使用して正常に完了した後にリダイレクトできます。あなたが応答にページ名を送信する場合

function submitData() 
    { 
     $.post('/loggedin/',{"fname":"name1","lname":"name2"},function(data){ 
     alert("Back from views.py"); 
     window.location = 'yourpage.hmtl' 
     }); 
    } 

それともページにリダイレクトするdataを使用することができます。

+0

しかし、私はあなたのajax呼び出しに応答を送信するだけだと思います。 – Mairaj

+0

この方法では動作します...しかし、ジャンゴビュー自体から同じことをすることはできませんか? – nidHi

+0

あなたは 'ajax'コールを送信しているように私はそうは思わないし、Ajaxはそのように振る舞うはずです。 – Mairaj

関連する問題