Перенаправление на POST-запрос после успешной обработки другого POST-запроса

У меня есть два независимых POST-запроса, которые я пытаюсь обработать один за другим с помощью Django. После первого POST-запроса я пытаюсь перенаправить на другое представление, которое также является POST-запросом и выполняет другую функциональность. Когда происходит перенаправление, второе представление получает GET вместо POST запроса. Нужно отметить, что запросы представляют собой два независимых события и не связаны между собой, но могут выполняться один за другим. Разрешает ли Django такой вид перенаправления или есть ли способ вызвать такое поведение?

Вот мой код:

Код шаблона, который вызывает первый POST запрос:

<p>Are you sure you want to proceed?</p>
<form action="{% url 'participants-reset'%}" method="post">
  {% csrf_token %}
  <fieldset>
    <div class="form-group">
        <button type="submit" class="btn btn-primary">Yes, match again.</button>
    </div>
  </fieldset>
</form>

views.py

def participants_reset(request): #View that handles first POST request
    if request.method == "POST":
        Participants.objects.all().delete()
        messages.success(request, "Santa's list is empty again.")
        return redirect('match') #Attempt to trigger second POST request through url
    else:
        messages.error(request, "Woops. Something went wrong. Please try again.")
        return redirect('participants')

def match_pairs(request): #View that handles second POST request
    if request.method == "POST":
        #Another functionality 
    

urls.py

    path('match-pairs/', views.match_pairs, name='match'),
    path('participants/', views.ParticipantsListView.as_view(), name='participants'),
    path('participants-reset/', views.participants_reset, name= 'participants-reset'),

Вы можете использовать модуль python requests и вызвать метод requests.post с телом запроса. вот документ https://docs.python-requests.org/en/latest/user/quickstart/#make-a-request

Вы можете попробовать что-то вроде следующего :-

def participants_reset(request): #View that handles first POST request
    if request.method == "POST":
        Participants.objects.all().delete()
        messages.success(request, "Santa's list is empty again.")
        r = requests.post(reverse('match'), data={'key': 'value'})
        return r #Attempt to trigger second POST request through url
    else:
        messages.error(request, "Woops. Something went wrong. Please try again.")
        return redirect('participants')
Вернуться на верх