How to get data from Ajax POST in my django view function?

$(document).ready(function(){  
  $('.addFolder input').keydown(function(e) {
    if (e.keyCode == 13) {
        name = $(this).val();
        $.ajax({
          type: "POST",
          url: "/folder/",
          data: name,
            success: function(result) {
              $('.folders ul li:first-child').after('<li class="bg-color-2 ui-droppable" data-folderid="2">'+name+' <span>0</span></li>');
              $('.addFolder input').val('');
            }
        });
    }
  });

How to get data from this Ajax entry in my django views function?

templates:

  <div class="addFolder">
    <span>+</span>
    <input type="text" placeholder="Folder name">

  </div>

view:

def folder(request):
    user = request.user
    if request.method == "POST" and request.is_ajax():
        name = request.POST['name']
        f = Folder.objects.create(name=name, user=user)
        status = "Good"
        return HttpResponse(status)
    else:
        status= "Bad" 
        return HttpResponse(status)

Why do I still have:

[30 / November / 2013 14:47:52] "POST / folder / HTTP / 1.1" 403 2294

in magazines?

+4
source share
1 answer

You can always access it in your variable request.POST.
Documents: link

Another thing you need to fix in js code is the parameter data.
JQuery docs have the following: Object must be Key/Value pairs( link )


403, csrf.
MIDDLEWARE_CLASSES 'django.middleware.csrf.CsrfViewMiddleware', {% csrf_token %} , js .
: data: {'name': name, 'csrfmiddlewaretoken': $('input[name="csrfmiddlewaretoken"]').val()}

+8

All Articles