Django: проверка CSRF завершилась неудачно, несмотря на предоставленный токен - PullRequest
0 голосов
/ 24 апреля 2020

Я получаю ошибку 403 из-за ошибки проверки csrf_token, несмотря на явное объявление токена в вызове ajax. Я для своего словаря данных таким же образом в других функциях, и он просто отлично работает.

Вот JS:

$(document).on("click", ".update-cleaning", function(event){
  event.preventDefault();
  var input_field_name = $(this).attr('name')
  var obj_id = $(this).attr('value')
  var model_name = $(this).attr('data-model')
  var field_name = $(this).attr('data-field')
  var value = $("#" + input_field_name + obj_id).val();
  if (!value) {
      alert('Fill the field!')
    }
  else {
  $.ajax({
            url: "{% url 'ajax_update_cleaning' %}",
            type: "POST",
            data: {'object_id': obj_id, 'model_name': model_name, 'field_name': field_name, 'value': value, 'csrfmiddlewaretoken': '{{ csrf_token }}'},
            dataType: 'json',
        })
        .done(function(response){
                    console.log(response);
                })
        }
});

My * Форма 1017 * находится в всплывающем окне, которое переключается нажатием на <td> и выглядит так:

<td class="text-md-center with-popover" name="frequency" value="{{cleaning.id}}">
    {{ cleaning.frequency }}
    <div id="frequency{{cleaning.id}}" style="display: none">
    <form method="POST">
    <label for="cleaning_frequency">Frequency: </label>
    <input id="cleaning_frequency{{cleaning.id}}" type="number" name="cleaning" value="{{cleaning.frequency}}"> 
    <button type="submit" class="btn btn-success btn-sm update-cleaning" name="cleaning_frequency" data-model="Cleaning" data-field="frequency" value="{{cleaning.id}}"> Change </button>
    </form>
  </div>
</td>

Не могли бы вы дать мне несколько идей? Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

В любом шаблоне, который использует форму POST, используйте тег csrf_token внутри элемента, если форма предназначена для внутреннего URL, например:

<form method="post">{% csrf_token %}

Подробнее см. В документации Django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...