鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 3

[已解决]flask 表单提交问题

[复制链接]
发表于 2020-4-5 11:37:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 暗夜之隐 于 2020-4-5 11:50 编辑

  1. from flask import Flask, render_template, request
  2. import json
  3. app = Flask(__name__)
  4. @app.route('/')
  5. def student():
  6.    return render_template('student.html')

  7. @app.route('/result',methods = ['POST', 'GET'])
  8. def result():
  9.    if request.method == 'POST':
  10.       print(request.method)#这是一个post请求
  11.       result = request.form

  12.       print(result)

  13.       print(json.dumps(request.form))
  14.       
  15.       return render_template("result.html",result = result)

  16. if __name__ == '__main__':
  17.    app.run(debug = True)
复制代码


上面这一段 request.form 出来的是什么数据 我打印出来的是这样的ImmutableMultiDict([('Name', '20'), ('Physics', '30'), ('chemistry', '40'), ('Mathematics', '50')])  是包含了提交的内容,但不明白他是用的什么方法把数据取出来 不是字典也不是单纯属列表 也不只是元组
  
我也查看有获取提交表单的方法json.dumps(request.form) 可以得到提交的表单 字典格式



  1. <html>
  2.    <body>
  3.    
  4.       <form action = "http://localhost:5000/result" method = "POST">
  5.          <p>Name <input type = "text" name = "Name" /></p>
  6.          <p>Physics <input type = "text" name = "Physics" /></p>
  7.          <p>Chemistry <input type = "text" name = "chemistry" /></p>
  8.          <p>Maths <input type ="text" name = "Mathematics" /></p>
  9.          <p><input type = "submit" value = "submit" /></p>
  10.       </form>
  11.       
  12.    </body>
  13. </html>
复制代码


这上面的是提交数据






  1. <!doctype html>
  2. <html>
  3.    <body>

  4.       <table border = 1>
  5.          {% for key, value in result.items() %}

  6.             <tr>
  7.                <th> {{ key }} </th>
  8.                <td> {{ value }} </td>
  9.             </tr>

  10.          {% endfor %}
  11.       </table>

  12.    </body>
  13. </html>
复制代码

这里就是不明白数据是如何提取出来的 传入这个模板的数据是result = request.form ,用到的是result.items()  我在网上也没看到这个方法,另外出来的应该是字典 但for 循环里面有2个值,难道result.items() 的结果是一个列表或元组吗  我打印过这个result.items()数据出来的是<generator object MultiDict.items at 0x000002430B561390>

我能想到的就还是这个数据 request.form   出来的数据是这样的这里面有4个元组,但这是如何提取出来的呢 ImmutableMultiDict([('Name', '20'), ('Physics', '30'), ('chemistry', '40'), ('Mathematics', '50')])
最佳答案
2020-4-5 15:08:19
再来一组测试:

>>> from  werkzeug.datastructures import ImmutableMultiDict as wdi
>>> d =wdi([('a', 'b'), ('a', 'c')])
>>> d.getlist("a")
['b', 'c']
>>> d["a"]
'b'
>>> for key,value in d.items():print(key)
...
a
>>> for key,value in d.items():print(key,value)
...
a b
>>> d.items()
<generator object MultiDict.items at 0x000002080A816E48>
>>> list(d.items())
[('a', 'b')]
>>> dict(d.items())
{'a': 'b'}
>>> d
ImmutableMultiDict([('a', 'b'), ('a', 'c')])
>>> len(d)
1
>>> d =wdi([('a', 'b'), ('a', 'c'),("333","tte"),("444","sdfs")])
>>> d
ImmutableMultiDict([('a', 'b'), ('a', 'c'), ('333', 'tte'), ('444', 'sdfs')])
>>> len(d)
3
>>> for key,value in d.items():print(key,value)
...
a b
333 tte
444 sdfs
>>>
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-5 16:33:46 | 显示全部楼层
wp231957 发表于 2020-4-5 15:08
再来一组测试:

>>> from  werkzeug.datastructures import ImmutableMultiDict as wdi

感谢解惑
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-2 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表