У меня есть этот шаблон, где у меня есть форма для отправки адреса электронной почты, и я пытаюсь установить флажок, чтобы пользователи могли выбирать, получать ли уведомления по электронной почте или нет.
{% extends "base_generic.html" %}
{% block content %}
<h1>{{ user.username }}</h1>
<p> Email comfirmed? {{ user.profile.email_confirmed }}</p>
{% if user.profile.email_confirmed %}
<p>Email confimed as {{ user.email }}</p>
{% else %}
<form method="post">
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label_tag }}<br>
{{ field }}
{% if field.help_text %}
<small style="color: grey">{{ field.help_text }}</small>
{% endif %}
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
</p>
{% endfor %}
<button type="submit">Authentificate</button>
</form>
{% endif %}
{% if posts %}
<p>Your posts: </p>
<ul>
<li> {{ posts.author }} {{ posts.pub_date }}
{% if post.last_edited != null %}
Last edited: {{ post.last_edited }}
{% endif %}
<br>
<a href="{% url 'fortykwords:detail' posts.id %}">{{ posts.title }}</a></li>
{% for tag in posts.tags.all %}
<a href="{% url 'fortykwords:tag' tag.name %}">{{ tag.name }}</a>
{% endfor %}
{% endif %}
</ul>
{% else %}
<p>No posts are available.</p>
{% endif %}
<input type="checkbox" name="checkbox" id="{{request.user.id}}">Send me an email notifications when I receive a message.<br>
<script type="text/javascript">
window.CSRF_TOKEN = "{{ csrf_token }}";
$(document).ready(function(){
$("input:checkbox").change(function() {
if($(this).is(":checked")) {
$.ajax({
url: "/permissions/",
type: 'POST',
data: { strID:$(this).attr("id"), strState:"1" },
csrfmiddlewaretoken: jQuery("[name=csrfmiddlewaretoken]").val(),
}
);
} else {
$.ajax({
url: "/permissions/",
type: 'POST',
data: { strID:$(this).attr("id"), strState:"0" },
csrfmiddlewaretoken: jQuery("[name=csrfmiddlewaretoken]").val(),
});
}
});
});
</script>
{% endblock %}
Проблема в том, что когда я нажимаю флажок, он выдает следующую ошибку:
[02/Sep/2018 09:22:54] "POST /permissions/ HTTP/1.1" 403 2513
Forbidden (CSRF token missing or incorrect.): /permissions/
Я знаю, что это что-то, связанное с токеном CSRF, но я пробовал много вариантов, и я не знаю, что это могло быть. Я подозреваю, что это потому, что я использую один токен для формы и другой для запроса AJAX. Что я должен изменить, чтобы токен CSRF был успешно отправлен?