Я делаю POST-запрос, используя Axios в моем JS-коде, чтобы отправить некоторую информацию на мой локальный сервер Django. У меня есть {% csrf_token%} в форме моего html-кода, но я не знаю, как отправить токен csrf с помощью Axios.
Я получаю эту ошибку в терминале: Запрещено (токен CSRF отсутствует или неверен.): / Api / scoring / submit_score_details.
Как мне правильно вставить токен csrf в мой пост axios? Сейчас я не думаю, что JS может читать {{csrf_token}} в том виде, в каком он есть у меня. Я искал Stack, но похоже, что большинство людей используют jQuery или какой-либо другой тип JS.
Чтобы сэкономить место, я не опубликовал, какие переменные в полезной нагрузке, но все они просто строки.
Я могу убрать ошибку, если поставлю @csrf_exempt над моей функцией в файле views.py.
{
let payload = {
"csrfmiddlewaretoken": "{{ csrf_token }}",
"math_problem": problem,
"user_answer": userInput,
"true_answer": correctAnswer,
"question_status": questionStatus,
}
console.log(payload);
axios.post('../api/scoring/submit_score_details', payload)
}
<div class="col text-center">
<button id="start" type="button" class="btn btn-primary btn-lg">
New Problem
</button>
<p id="math_problem"></p>
<form id="inputForm" method="POST">
{% csrf_token %}
<input id="user_input" autocomplete="off" class="form-control form-control-lg" type="text" placeholder="Type your answer here">
<input id="correct_answer" type="hidden">
</form>
<br>
<button id="result_check" type="button" class="btn btn-primary btn-lg">Check</button>
<script src={% static 'js/game_logic.js' %}></script>
</div>
{
let payload = {
"csrfmiddlewaretoken": "{{ csrf_token }}",
"math_problem": problem,
"user_answer": userInput,
"true_answer": correctAnswer,
"question_status": questionStatus,
}
console.log(payload);
axios.post('../api/scoring/submit_score_details', payload)
}
<form id="inputForm" method="POST">
{% csrf_token %}
<input id="user_input" autocomplete="off" class="form-control form-control-lg" type="text" placeholder="Type your answer here">
<input id="correct_answer" type="hidden">
</form>