Передача данных из формы публикации в представление FileResponde

Недавно я начал использовать Django, и мне удалось создать два представления: одно для отправки формы, а другое для возврата FileResponse, по отдельности они работают нормально.

Теперь мне нужно интегрировать оба, когда клиент отправляет форму, я хочу перенаправить в другое представление, используя поля, представленные в предыдущей форме. Как я могу это сделать?

Вот мой вид формы:

def submitForm(request):
    
    if 'report' in request.POST:
        
        date_start = request.POST.get('date_start')
        date_end = request.POST.get('date_end')
        state = request.POST.get('state')
    
    return render(request, 'comissao.html')

Вот мое представление, которое создает файл PDF

def createPdf(request):

    date_start = '20220301'
    date_end = '20220331'
    state = 'G00471'
    
    body = "some html"
    options = { 'quiet': '' }
    pdfkit.from_string(body, options=options)

    file = open('file.pdf', 'rb')
    
    return FileResponse(file)

Как видите, мне нужна информация, переданная при первом просмотре, для использования при втором просмотре, я пробовал что-то вроде этого, но я думаю, что ошибаюсь в концепции,

return reverse('pdf', kwargs={'state':state, 'date_start':date_start, 'date_end':date_end})

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

reverse() возвращает только URL-адрес, но я думаю, что вы хотите сделать redirect() для этого представления.

Для передачи параметров у вас есть несколько вариантов:

  • ПОЛУЧИТЬ параметры
  • Сессия
  • URL-параметры

Давайте использовать параметры GET, которые я бы предложил:

from urllib.parse import urlencode

...
def submitForm(request):
    ...
    response = redirect('pdf')
    params = { state' : state, 'date_start: date_start, 'date_end': date_end}
    response['Location'] += f'?{urlencode(params)}'
    return response

Затем в вашем представлении PDF вам нужно проанализировать параметры GET:

def createPdf(request):
    date_start = request.GET.get("date_start")
    ...

Обратите внимание, что вам также может понадобиться преобразовать ваши даты в строку и обратно для запроса, который я здесь проигнорировал.

это было проще, чем я думал, мило. Спасибо!

ddddddd 17.05.2022 20:51

Другие вопросы по теме