Django как передать значения из одного представления в шаблон другого представления

Рейтинг: 2Ответов: 0Опубликовано: 19.05.2023

У меня есть две страницы для резервации столика в ресторане, логика их такая: на первой странице пользователь вводит свои контактные данные и дату резервацией с количеством гостей и нажимает кнопку далее, перекидывет на вторую страницу где нужно выбрать столик и время (свободное время генерируется в зависимости от выбранной даты). Проблема в том что не получаеться через представление передать значения времени в шаблон второй страницы. Вот сырой пример кода:

def contact_details(request):
if request.method == 'POST':
    client_name = request.POST.get('client_name')
    client_email = request.POST.get('client_email')
    client_phone = request.POST.get('client_phone')
    number_of_guests = request.POST.get('number_of_guests')
    reservation_date = request.POST.get('reservation_date')

    request.session['client_name'] = client_name
    request.session['client_email'] = client_email
    request.session['client_phone'] = client_phone
    request.session['number_of_guests'] = number_of_guests
    request.session['reservation_date'] = reservation_date
    request.session['reservation_time'] = [str(time) for time in free_time()] # вот те 
        значения времени, которые нужно передать в шаблон
    return redirect('reservation_data')
return render(request, 'contact_details.html')

def reservation_data(request):
if request.method == 'POST':
    client_name = request.session.get('client_name')
    client_email = request.session.get('client_email')
    client_phone = request.session.get('client_phone')
    number_of_guests = request.session.get('number_of_guests')
    reservation_date = request.session.get('reservation_date')

    table_number = request.POST.get('table_number')
    reservation_time = request.POST.get('reservation_time')

    data = {
        'client_name': client_name,
        'client_email': client_email,
        'client_phone': client_phone,
        'number_of_guests': number_of_guests,
        'reservation_date': reservation_date,
        'table_number': table_number,
        'reservation_time': reservation_time,
        'reservation_time_end': int(reservation_time[:2]) + 2
    }
    reservation = Reservation.objects.create(**data)
    request.session.clear()
    return redirect('reservation_detail', pk=reservation.pk)
return render(request, 'reservation_data.html')

Знаю, что значаения передаються через render, но если в первом представлении использовать render, то не запуститься второе представление по сохранению значений из форм, поэтому остаёться redirect. Объеденить два представления в одно тоже не могу, так как не получиться обработать дату и сгенерировать свободное время

Ответы

Ответов пока нет.