Django отправляет поля формы на другую страницу
У меня есть Django форма, которая принимает параметры фильтра для отчета. Страница отчета - это отдельное представление, которое отображает отчет на основе данных формы.
При первом проходе я просто установил действие формы на страницу отчета и метод GET. Затем данные формы передавались непосредственно в представление отчета через строку запроса, для получения которой я использовал GET. Проблема заключалась в том, что это позволяло обойти проверку формы, поскольку форма не возвращалась к своему собственному представлению.
При следующем проходе я удалил действие формы (чтобы она возвращалась к самой себе) и использовал form_valid (я использую представления на основе классов) для кодирования данных формы и перенаправления в представление отчета следующим образом:
ReportOptionsView(FormView)
form_class = OptionsForm
template_name = 'my_report_options.html'
report = reverse_lazy('my_report')
def form_valid(self, form):
qstr = urlencode(form.cleaned_data)
return redirect(self.report+"?"+qstr)
Страница отчета работает так же - я просто получаю информацию из строки запроса для фильтрации моделей и отображения отчета.
Я бы предпочел, чтобы данные формы не появлялись в строке запроса страницы отчета. Когда я попытался перенаправить на страницу отчета, используя метод POST, у меня начались проблемы. Даже вернувшись к исходному потоку, установив действие формы на страницу отчета (тем самым потеряв валидацию) и установив метод формы на POST, я получил 405 ошибку. Я понимаю, что могут быть способы сделать это с помощью Javascript, но я бы предпочел придерживаться Django/Python
Мой вопрос в том, какой правильный метод в Django для получения очищенных данных из проверенной формы и POST этих данных в отдельное представление так, чтобы данные формы не были открыты в URL?