2015-05-15 3 views
0

Я использую Ajax для отправки данных POST для просмотра Django, но у меня есть эта ошибка: 403 FORBIDDEN.403 FORBIDDEN использовать ajax для отправки сообщения DJANGO

На самом деле, я использую @csrf_exempt но я напуган, не лучшая идея ...

Мое мнение:

@csrf_exempt 
def myfic(request): 
    if request.method == "POST" : 
     competences = request.POST.get('theCompetences') 
     print("competences : ",competences) 
    ... 

Мой код JS:

function envoie_post_competences(){ 
    $.post("http://localhost:8000/myfic",{theCompetences:"aaaaaaa",}); 
    return false; 
} 

Что лучшее решение?

Благодарим за помощь!


Так что я должен добавить этот код:

var csrftoken = $.cookie('csrftoken'); 

function csrfSafeMethod(method) { 
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); 
} 
$.ajaxSetup({ 
    beforeSend: function(xhr, settings) { 
     if (!csrfSafeMethod(settings.type) && !this.crossDomain) { 
      xhr.setRequestHeader("X-CSRFToken", csrftoken); 
     } 
    } 
}); 

и моя функция JS не изменилась?

function envoie_post_competences(){ 
    $.post("http://localhost:8000/myfic",{theCompetences:"aaaaaaa",}); 
    return false; 
} 

Если да, то когда я нажимаю на кнопку отправки, ничего не происходит ..

ответ

2

Вам нужно установить заголовок X-CSRFToken, как показано на the documentation.

+0

Так что juste Я добавляю код в документацию в свой код js? – YassVegas

+0

Это должно сработать. Если это не так, используйте отладчик, например FireBug, чтобы узнать, что на самом деле происходит во время запроса AJAX. – Filly