Python 使用表单发布请求,然后能够保存在单独请求中返回的数据

Python 使用表单发布请求,然后能够保存在单独请求中返回的数据,python,python-2.7,flask,Python,Python 2.7,Flask,假设我有一张这样的表格 <form role="form"> <div class="form-group"> <label for="exampleInputEmail1">Email address</label> <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email"> </d

假设我有一张这样的表格

<form role="form">
  <div class="form-group">
    <label for="exampleInputEmail1">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email">
  </div>
  <div class="form-group">
    <label for="exampleInputPassword1">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
  </div>
</form>
这将呈现一个包含我正在寻找的结果的页面——这一切都很好。但是,在页面上,我还想添加将数据作为CSV下载的功能

| download csv | | return to search |
- result 1
- result 2
...
我遇到的问题是,在post请求之后,我需要一些方法来知道他们在申请表上的最后一个表单请求是什么

最好的方法是什么?

没有一种“最好的方法”可以做到这一点,因为在您的特定情况下“最好”的方法可能不适合其他情况。也就是说,下面是一些可能的方法(这些方法几乎没有触及到你需要用它们做什么才能让它们做好生产准备的表面),还有很多很多

你真的需要自己在这里研究选择;您的场景并不是特定于python或flask的,对于任何构建需要记住状态的HTTP应用程序的人来说,这几乎是一个问题

在隐藏输入中呈现收到的表单值
  • 呈现初始搜索结果时。将“下载CSV”呈现为表单的
    submit
    输入,表单将把这些值发回下载呈现程序

    我不是一个超级粉丝,因为当你真的在寻找一个GET时,它需要一个按钮和一个POST,如果你真的需要密码来呈现结果,这是一个安全问题

在呈现初始搜索结果页面时,呈现“下载CSV”的链接,使其包含某种会话ID。
  • 当您收到表单的初始
    POST
    以生成搜索结果时。获取
    电子邮件
    并将其存储在数据库表(或其他持久存储机制)中,记录此操作产生的某种类型的
    ID
    。您还可以保存用户提交的任何其他搜索参数等

  • ID
    随后成为“下载为CSV”链接的查询字符串参数。i、 e.当模板呈现初始搜索页面时,链接以
    结尾http://blahblah.com/download?ID=12345“

  • 当用户请求链接时,根据querystring
    ID
    参数从数据库中查找搜索/用户信息,然后将其传递给将为您呈现CSV的任何模板

  • 这种方法有很多种风格,您需要为您的场景选择最佳方案-您可以保存搜索条件以便重播,或保存实际搜索结果,这取决于搜索的性质、运行成本以及“下载为CSV”是否必须重播搜索或返回最初获得的准确结果,等等),您还需要将其硬化。不要发送原始数据库ID-发送散列/加密版本的ID,以便用户无法“猜测”下载ID,等等
我推荐这种方法,因为它根本不需要您向客户端返回用户名/密码


希望这会让你思考:)

你能详细说明你需要什么吗?HTTP在设计上是无状态的。除非您在浏览器中捕获此信息(即,在客户端填充表单)或将其永久存储在服务器端的某个位置(如会话或数据库),否则您真的无能为力。谢谢您,先生,感谢您为此所做的一切努力。我用了你推荐的第二个,效果很好
| download csv | | return to search |
- result 1
- result 2
...