Flask 重定向和HTTP方法 GET、POST
Flask URL构建
Redirect重定向
url_for() 函数对于动态构建特定函数的URL非常有用。
url_for() 函数接受 函数的名称 作为 第一个参数 ,以及一个或 多个关键字参数 ,每个参数对应于URL的变量部分。
以下脚本演示了如何使用 url_for() 函数:
from flask import Flask, redirect, url_for
app = Flask(__name__)
# 重定向admin
@app.route('/admin')
def hello_admin():
   return 'Hello Admin'
# 重定向guest
@app.route('/guest/<guest>')
def hello_guest(guest):
   return 'Hello %s as Guest' % guest
# 程序主入口
@app.route('/user/<name>')
def hello_user(name):
   if name =='admin':
      return redirect(url_for('hello_admin'))
   else:
      return redirect(url_for('hello_guest', guest = name))
if __name__ == '__main__':
   app.run(debug=True)这里注意url_for的第一个参数是函数名而不是路由名称
             
            
 
            
             
            
             
            
 
            
             
            
效果截图
             访问
             
              http://localhost:5000/user/admin
             
            
             
            
 
            
             
            
控制台输出
             
            
 
            
             
            
             访问
             
              http://localhost:5000/user/user1
             
            
             
            
 
            
             
            
控制台输出
             
            
 
            
             
            
Flask HTTP方法
Http协议是万维网中数据通信的基础。在该协议中定义了从指定URL检索数据的不同方法。
下表总结了不同的http方法:
| 序号 | 方法与描述 | 
|---|---|
| 1 | GET:以未加密的形式将数据发送到服务器,是最常见的方法。 | 
| 2 | HEAD:和GET方法相同但是没有响应体。 | 
| 3 | POST:用于将HTML表单数据发送到服务器,POST方法接受的数据不由服务器缓存。 | 
| 4 | PUT:用于上传内容替换目标资源的所有当前表示。 | 
| 5 | DELETE:删除由URL给出的目标支援的所有当前表示。 | 
常用的方法主要是 GET 和 POST
默认情况下,Flask路由响应 GET 请求。但是,可以通过为 route() 装饰器提供方法参数来更改此首选项。
为了演示在URL路由中使用 POST 方法,首先让我们创建一个HTML表单,并使用 POST 方法将表单数据发送到URL。
将以下脚本另存为login.html( 注意新建文件夹templates并将HTML文件放在对应文件夹下 )
             
            
 
            
             
            
<html>
      <form action = "http://localhost:5000/login" method = "post">
         <p>请输入名称:</p>
         <p><input type = "text" name = "name" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>编写Flask-Code
from flask import Flask, redirect, url_for, request, render_template
app = Flask(__name__)
# 路由到Login模板HTML
@app.route('/')
def index():
    return render_template("login.html")
@app.route('/success/<name>')
def success(name):
    return 'welcome %s' % name
@app.route('/login',methods = ['POST', 'GET'])
def login():
   if request.method == 'POST':
      print(1)
      user = request.form['name']
      return redirect(url_for('success',name = user))
   else:
      print(2)
      user = request.args.get('name')
      return redirect(url_for('success',name = user))


 
                        