Перенаправление на 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')