2011-07-09 11 views
1

私は投票というDjangoビューを持っています。これは@login_requiredデコレータによって保護されており、通常の使用では完全にうまく動作します。Django ajaxビューcsrfが500エラーで失敗する

は、私はシステムがよりダイナミックにするために、AJAXとJavaScriptに探して起動する価値のあるアイデアだろうことを決めた、と私は私の最初の試みのために、以下のようなものを実装:

$(function() { 
     $(".vote").click(vote); 
}); 

var vote = function() { 
      pk = $(this).attr('pk'); 

      $.ajax({ 
       type: "POST", 
       data: "pk=" + $(this).attr("pk"), 
       url: "/link/" + $(this).attr("pk") + "/vote/", 
       }); 
     }; 

に成功に投稿します正しいURL。私が火かき棒で出力を見ると、私は500のエラーを得ていることがわかります。私はhttps://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajaxから私のページに私はCSRFの問題を解決すると思っていたが、それを行っていないように見えるが含まれているが含まれています。

私は何かが明らかでないかどうかわかります!

ありがとうございます!

+0

Firebugに表示されているエラーとトレースバックを含めると便利です。 –

+0

私は今作った間違いを見つけました。愚かにもFirebugの出力にラインを逃しました、謝罪します! – jvc26

+0

http://stackoverflow.com/questions/6506897/csrf-token-missing-or-incorrect-while-post-parameter-via-ajax-in-django – brsbilgic

答えて

0

私は、これは上記を整理することでした解決方法が判明:

var vote = function() { 
     pk = $(this).attr('pk'); 

     data = { 
      'pk': pk 
     }; 

     $.ajax({ 
      type: "POST", 
      data: data, 
      url: "/link/" + pk + "/vote/", 
      }); 
    }; 

はこのように片付け、私は、ビューをチェックアウトし、それがDataDictのうち、正しい値を引っ張っていなかったことを発見500エラーが発生していたajaxによって渡されました。

私はCSRFの問題のために以前は403が発生していましたが、それを解決する方法を知りたい人は上記の質問に記載されているスクリプトを使用し、/ static/jsの 'csrf.js' /私のアプリのディレクトリ、そしてその問題を解決したスクリプトの1つとしてそれを含めた。

関連する問題