Состояние гонки при использовании django GET
Я написал функцию в Django, которая выглядит примерно так:
@login_required
def make_appointment(request):
existing_appointments = Appointment.objects.all()
print('existing_appointments = ', len(existing_appointments))
new_appointment = Appointment()
new_appointment.save()
# ...
И я вызываю это из javascript, используя следующий код:
for(i=0; i<2; i++){
const xhr = new XMLHttpRequest();
xhr.open('GET', "make_appointment/")
xhr.send();
}
Я бы ожидал, что сначала вызывается команда GET, которая, в свою очередь, заставляет Django выполнить функцию make_appointment
. Я ожидал бы увидеть следующий журнал:
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
existing_appointments = 0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
existing_appointments = 1
Но журнал, который я обычно получаю, выглядит так:
existing_appointments = 0
existing_appointments = 0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
Но я также уже получил
existing_appointments = 0
existing_appointments = 1
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
[18/Dec/2024 17:42:48] "GET /make_appointment/ HTTP/1.1" 302 0
Для меня это проблематично, поскольку время второй встречи зависит от наличия первой, поэтому их следует создавать впоследствии.
Как я могу исправить этот код?