jquery1.7.1とdjango1.3を使用して、Webで見つけたチュートリアルコードで、ajaxを介してPOSTリクエストを作成しようとしました。
$(document).ready(function(){
$("#create").click(create_note);
});
var create_note = function() {
var title = $("#title").val()
var slug = $("#slug").val()
if (title != "" && slug != "") {
var data = { title:title, slug:slug };
console.log('title='+title);
console.log('slug='+slug);
var args = { type:"POST", url:"/create/", data:data, complete:done };
$.ajax(args);
}
else {
// display failure
}
return false;
};
URL「/create/」はdjangoビューにマップされます
(r'^create/$','notes.views.create_note'),
def create_note(request):
error_msg = u"No POST data sent."
if request.method == "POST":
post = request.POST.copy()
if post.has_key('slug') and post.has_key('title'):
slug = post['slug']
if Note.objects.filter(slug=slug).count() > 0:
error_msg = u"Slug already in use."
else:
title = post['title']
new_note = Note.objects.create(title=title,slug=slug)
return HttpResponseRedirect(new_note.get_absolute_url())
else:
error_msg = u"Insufficient POST data (need 'slug' and 'title'!)"
return HttpResponseServerError(error_msg)
javascript関数をトリガーする送信ボタンをクリックするとcreate_note
、403エラーが発生します。csrfの問題である必要があります。
レディ関数を変更してこれを解決しようとしました
$(document).ready(function(){
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});
$("#create").click(create_note);
});
しかし、それは機能しませんでした..私はまだ得ます403 error
ajax
だから、私は呼び出しでデータを変更しようとしました
var create_note = function() {
var data = { title:title, slug:slug ,csrfmiddlewaretoken: '{{ csrf_token }}'};
...
var args = { type:"POST", url:"/create/", data:data, complete:done };
$.ajax(args);
};
それでも403エラーが発生します。
これを修正するために何をすべきか教えてください..これについての
djangoドキュメントjQuery(document).ajaxSend(...
を見ましたが、それを使用する方法がわかりません。コード全体をjavascriptファイルにコピーする必要があります。..ここで本当に混乱しています。 。