我最近开始使用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})
发布于 2022-05-17 17:47:19
reverse()只返回URL,但我认为您更愿意对该视图执行redirect()。
对于传递参数,您有几个选项:
获取parameters
让我们使用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")
...请注意,您还可能需要将您的日期转换为查询的字符串和返回,我在这里忽略了这一点。
https://stackoverflow.com/questions/72277767
复制相似问题