Ошибка csrf при имитации post-запроса в django

форма, которую я хочу смоделировать

<form action="{% url 'reset'  %}" name="form1" id="form1" method="POST">
        {% csrf_token %}
        <div class="py-1">
            <input class="focus:outline-none w-full p-1 border border-gray-300 rounded-md placeholder:font-light placeholder:text-gray-500 placeholder:text-sm pl-2"
            type="text" name="username" id="" placeholder="username" required>
        </div>
        <div class="flex justify-between w-full py-4">
            <div class="mr-24">
              <span class="text-md text-gray-400"> Dont'have an account? </span>
              <a class="font-bold text-black"><a href="/signup" class="font-bold">Sign up </a></span>
            </div>
            <span class="font-bold text-md"><a  href="{% url 'signin' %}"class="font-bold">sign in </a></span>
        </div>
        <button class="w-full bg-black text-white p-2 rounded-lg mb-6 hover:bg-blue-400 hover:text-white  "
        type="submit" >
           submit
        </button>

    </form> 

обращает внимание на то, что я добавляю атрибут form_name к запросу post в js перед его отправкой

 document.getElementById('form1').addEventListener('submit', function(event) {
         event.preventDefault(); // Prevent default form submission
         var form = this;
         var formData = new FormData(form);
         formData.append('form_name', 'form1');
 
 
         fetch(form.action, {
             method: 'POST',
             body: formData,
             headers: {
                 'X-CSRFToken': '{{ csrf_token }}'
             }
         })
         .then(response => response.json())
         .then(data => {
    if (data.show_form2) {
        showForm2(data);
    }
    if (data.messages) {
        const messages = JSON.parse(data.messages);

        showMessages(messages);
    }
}).catch(error => console.error('Error:', error));
     });

и часть представления, которая имитирует пост-запрос


             data = {'username': request.user.username, 'form_name': "form1"}


             csrf_token = get_token(request)

             response = requests.post('http://127.0.0.1:8000/reset', data=data, headers={'X-CSRFToken': csrf_token})

но я получаю эту ошибку Запрещено (CSRF cookie не установлен.): /reset. пожалуйста, помогите

Подход, который помогает мне преодолеть эту проблему, называется requests Session и работает следующим образом:

session = requests.Session()

resp = session.get('http://127.0.0.1:8000/reset')  # Get form to get valid csrf token
csrf_token = resp.cookies['csrftoken']

resp2 = session.post('http://127.0.0.1:8000/reset', data=data, headers={'X-CSRFToken': csrf_token})
Вернуться на верх