csrf mit ajax und django post

Unter Verwendung von jquery1.7.1 und django1.3 habe ich versucht, eine Post-Anfrage über Ajax zu stellen, in einem Tutorial-Code, den ich auf gefunden habeNetz

<code>$(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;
};
</code>

Die URL "/ create /" wird der Django-Ansicht zugeordnet

<code>(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)
</code>

Wenn ich auf den Submit-Button klicke, wird die Javascript-Funktion ausgelöstcreate_note Bekomme ich einen 403 fehler. Muss das csrf Problem sein ..

Ich habe versucht, dies durch Modifizieren der Ready-Funktion zu lösen

<code>$(document).ready(function(){
        $.ajaxSetup({
        data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
    });
        $("#create").click(create_note);

    });
</code>

Aber es hat nicht funktioniert. Ich verstehe immer noch403 error

Also habe ich versucht, die Daten in zu ändernajax Anruf

<code>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);

};
</code>

Immer noch verursacht es 403 Fehler ..

Bitte sagen Sie mir, was zu tun ist, um das zu korrigierendjango doc darüber, aber ich bin verwirrt, wie man davon Gebrauch macht. Soll ich das ganze kopierenjQuery(document).ajaxSend(... Code in meine Javascript-Datei .. Ich bin hier wirklich verwirrt ..

Antworten auf die Frage(1)

Ihre Antwort auf die Frage