Я пытаюсь создать проверку на стороне клиента, чтобы узнать, было ли имя пользователя принято при регистрации. Эта проверка должна произойти до того, как пользователь представит форму.Как вы переносите токен Django csrf в плагин проверки jquery?
Для достижения этой цели я использую плагин проверки JQuery: http://jqueryvalidation.org/
Проблема у меня в том, что я получаю 403 ошибку:
POST example.com/check-username 403 (FORBIDDEN)
Это код для на стороне клиента проверки: $ (документ) .ready (функция() {
$('#register-form').validate({ // initialize the plugin
rules: {
username: {
required: true,
remote: {
url: "/check-username",
type: "post",
data: {
csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
username: function() {
return $("#id_username").val();
}
}
}
}
}
});
});
Вот моя функция Validate в views.py:
def check_username(request):
username = request.POST.get('username', None)
if not username:
return HttpResponseBadRequest("Invalid username")
return User.objects.exists(username=username)
Я подозреваю, что это ошибка csrf, но я не слишком уверен, как это сделать, чтобы работать вместе с плагином проверки jquery. Как мне это сделать?
Вы прочитали [docs] (https://docs.djangoproject.com/en/1.8/ref/csrf/)? – Sayse
В частности, раздел [Ajax] (https://docs.djangoproject.com/en/1.8/ref/csrf/#ajax), который дает пример кода, показывающий, как это сделать. –