首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据从post表单传递到FileResponde视图

将数据从post表单传递到FileResponde视图
EN

Stack Overflow用户
提问于 2022-05-17 16:39:54
回答 1查看 28关注 0票数 1

我最近开始使用Django并创建了两个视图,一个用于提交表单,另一个用于返回FileResponse。

现在,我需要将两者集成在一起,当客户端提交表单时,我希望使用在前一个表单上提交的字段重定向到另一个视图。我怎么能这么做?

以下是我的表单视图:

代码语言:javascript
复制
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文件的视图

代码语言:javascript
复制
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})

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 17:47:19

reverse()只返回URL,但我认为您更愿意对该视图执行redirect()

对于传递参数,您有几个选项:

获取parameters

  • Session

  • URL参数的

让我们使用GET参数,我建议:

代码语言:javascript
复制
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参数:

代码语言:javascript
复制
def createPdf(request):
    date_start = request.GET.get("date_start")
    ...

请注意,您还可能需要将您的日期转换为查询的字符串和返回,我在这里忽略了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72277767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档