Django + ajax (jquery): код ошибки http 403 (запрещено)

-4

Я разрабатывал простой вызов ajax (функция $.ajax с типом, url и данными как параметры) с jquery на странице, но я получил ошибку 403. Поэтому я добавил к функции $.ajax дополнительный параметр параметров для csrf, и соответствующий токен правильно отображается в шаблоне. Но я снова получил ошибку 403. Я также попытался добавить в обработчик вида (в views.py) декоратор csrf, например @csrf_protect или @requires_csrf_token но ничего не изменилось.

Некоторая помощь?

Я видел этот шаблон, чтобы сделать ajax-вызов в django https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#s-ajax

но для меня действительно слишком много кода для создания простого вызова ajax, поэтому я нахожу короткое решение

  • 0
    Документы там по причине. Вы получаете 403, потому что токен CSRF не передается. Следуйте указаниям документации, и все будет в порядке.
  • 0
    Извините, но я не знаю, как принять. Теперь я вижу кнопку, чтобы принять. Для меня это совсем не интуитивно, если бы существовал обработчик события наведения мыши, который бы окрашивал кнопку при наведении курсора мыши, я думаю, что пользовательский интерфейс был бы лучше.
Теги:

1 ответ

5

Если вы не хотите использовать защиту CSRF для этого представления, @csrf_exempt декоратор - это @csrf_exempt --those, другой просто обеспечит защиту CSRF. Это, вероятно, самое простое решение, особенно если вызов не особенно чувствителен к безопасности.

Кроме того, убедитесь, что вы следуете методу, указанному в документах: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#page-uses-ajax-without-any-html-form

  • 0
    Секрет в том, чтобы добавить это в начало вашего views.py: from django.views.decorators.csrf import ensure_csrf_cookie <br> @ensure_csrf_cookie

Ещё вопросы

Сообщество Overcoder
Наверх
Меню