Request 对象在 web 应用的开发中是一个非常重要的对象, 主要用来获取用户发来的请求数据
常用属性参考: http://docs.jinkan.org/docs/flask/api.html#flask.request
下面我们以一个表单提交的例子来说明一些常用 request 属性的使用
1. 创建一个表单的 template
在 templates 文件夹下面创建 form.html 模板文件, 输入下面的代码
- {% extends "base.html" %}
- {% import "forms.html" as forms %}
- {% block content %}
- <form action="/doPost" method="post">
- <dl>
- <dt>UserName</dt>
- <dd>{{ forms.input("username") }}</dd>
- <dt>Password</dt>
- <dd>{{ forms.input("password",type="password") }}</dd>
- <dd><input type="submit" value="提交"/></dd>
- </dl>
- </form>
- {% endblock %}
其中用到了 forms.html 中的宏, 关于宏的应用请参考本系列文章的其它内容通过调用宏创建了一个 username 和 password 的文本框, 同时定义 action 是 / doPost 即把数据提交到 / doPost 这个 url 上, method 用 Post.
2. 定义表单展示 url
在 code.py 中定义一个返回表单的方法:
- @app.route("/form")
- def renderForm():
- return render_template("form.html")
3. 编写一个表单数据处理的方法
在 code.py 中定义表单处理的函数, url 要定义为 form.html 中 action 所指向的 url, 即 / doPost,
- @app.route("/doPost",methods=["post"])
- def handPost():
- username = request.form["username"]
- password = request.form["password"]
- return "username:"+username+",password:"+password
这个方法会返回用户提交的 username 和 password 的数据
4. 测试应用
启动应用访问 / form 这个 url, 效果如图:
在文本框中输入 username 和 password, 这里我们用 zhang san 和 password 作为这两个框的值:
点击提交, 会转到 doPost 路径, 效果如图:
这样一个简单的表单提交就完成了
如果我们在提交数据给 doPost 这个方法的时候, 在 url 上加了参数, 可以通过 arg 来获取,
比如我们在 form.html 上给 action 加上一个参数? q=postString, 如图:
<form action="/doPost?q=postString" method="post">
同时, 在处理 post 请求的方法中添加 q 参数的处理代码
arges = request.args["q"]
整体代码如下:
再次提交后效果:
通过 request.values 可以获取 forms 和 url 上的所有参数的值, 比如, 我们在 doPost 方法里添加一个处理 values 的代码
- requestValues = request.values.get("username")
- requestValues2 = request.values.get("q")
再次提交后, 效果如图:
来源: http://blog.51cto.com/12482328/2088937