私はもともとajax
コールを使用して APIにPOST
データを送信しました。django restフレームワークコメントフォームデータを送信しない(角度jを使用してjsonデータを送受信する方法)
$('#comment_form').on('submit', function(e) { e.preventDefault()
$.ajax({
type:"POST",
url: '/api/comments/create/',
headers:{ 'X-CSRF-Token': getCookie('csrftoken') },
data:$('#post_form').serialize(),
error: function(response){
alert('Not authorized.'); // Or something in a message DIV
},
success: function(response){
// do something with response
}
});
});
が、私はコメントform
を使用してPOST
何でもしようとするとき、ログインform
などの他の形態の残りの部分とPOST
form
は仕事だけで罰金、何らかの理由で、私は 、404
エラーを得ていました。
は
私はそれがangualr JSのルーティング機能を使用してDOM
に後から追加されますので、それはだ考え出し(ここでコメントボックスhttp://192.241.153.25:8000/#/post/images2がいることを含んでライブサイトです)。
コンソールネットワークタブでcsrf
が正常に送信されると、これは通常のcsrf
トークンが失われます。
誰でもこの問題の解決策をご存知ですか?
jQuery
ajax
の代わりにAngularJs
を使用するとうまくいくのだろうかと思います。
私は考えることができる多くの問題があります。最初に、CSRFが見つからない場合、404が表示されるはずはありません。第2に、angularがテンプレートを変更したときに、jqueryのドキュメントは再び呼び出されません。コントローラの最後でjquery関数を手動で呼び出すか、関連するイベントを追加する必要があります。第三に、これはまったく投稿していないであろうし、404を与えることはないだろう。これは非常に奇妙なようだ。したがって、コードをさらに調査する必要があります。角度を使用しているので、jqueryのajaxを使用せず、代わりにangleのhttpやサービスを使用するので、強くお勧めします。 – Wtower