HTTP协议是万维网数据通信的基础. 在这个协议上可以对同一URL使用不同的方法获取数据.
下面展示了几种不同的HTTP方法.

  • GET 将未经加密的信息发送的服务器. 是最通用的方法.
  • HEAD 该方法除了服务端不返回响应内容只返回头信息之外, 同GET是一样的.
  • POST 用于向服务器发送HTML表单数据. POST请求不会被缓存.
  • PUT 将URL所指示的资源用上传的内容替换.
  • DELETE 将URL所指示的资源删除.

Flask路由默认处理的是GET请求, 但我们可以通过添加route()装饰器的参数来改变这点.

为便于演示URL路由中的POST方法, 我们创建一个HTML表单, 并用这个表单给URL发送数据.
将下面内容保存为login.html.

<html>
   <body>
      
      <form action = "http://localhost:5000/login" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "nm" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
      
   </body>
</html>

将下面这段Python代码保存并执行:

from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/success/<name>')
def success(name):
   return 'welcome %s' % name

@app.route('/login',methods = ['POST', 'GET'])
def login():
   if request.method == 'POST':
      user = request.form['nm']
      return redirect(url_for('success',name = user))
   else:
      user = request.args.get('nm')
      return redirect(url_for('success',name = user))

if __name__ == '__main__':
   app.run(debug = True)

在开发模式下执行程序开启服务器后, 在浏览器中打开login.html, 会看到一个简陋的表单, 我们填入名字并提交.
然后表单就把数据POST到action所指示的URL上. http://localhost:5000/login这个URL被绑定到login()函数上, 一旦服务器通过POST方法接收到数据, 表单里nm字段的值就从下面这段代码中获取到了:

user = request.form['nm']

然后这个值被作为变量传到了/success这个URL上, 浏览器最终展示的是/successURL下的welcome字样的信息.

我们把login.html中的action改为GET方法, 再次从浏览器中打开页面, 提交后, 服务器代码收到的是GET请求, nm字段的值这次用如下代码获取:

User = request.args.get(‘nm’)

这里, args是由字段的名称和值组成的字典对象, nm字段的值同样被传递到了/successURL上.


EthanSun
45 声望3 粉丝