Flask 重定向和HTTP方法

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的第一个参数是函数名而不是路由名称

flask-url_for

parameter introduce

效果截图

访问http://localhost:5000/user/admin

website info

控制台输出

terminal output

访问http://localhost:5000/user/user1

website info

控制台输出

image-20220903140823133

Flask HTTP方法

Http协议是万维网中数据通信的基础。在该协议中定义了从指定URL检索数据的不同方法。

下表总结了不同的http方法:

序号方法与描述
1GET:以未加密的形式将数据发送到服务器,是最常见的方法。
2HEAD:和GET方法相同但是没有响应体。
3POST:用于将HTML表单数据发送到服务器,POST方法接受的数据不由服务器缓存。
4PUT:用于上传内容替换目标资源的所有当前表示。
5DELETE:删除由URL给出的目标支援的所有当前表示。

常用的方法主要是GETPOST

默认情况下,Flask路由响应GET请求。但是,可以通过为**route()**装饰器提供方法参数来更改此首选项。

为了演示在URL路由中使用POST方法,首先让我们创建一个HTML表单,并使用POST方法将表单数据发送到URL。

将以下脚本另存为login.html(注意新建文件夹templates并将HTML文件放在对应文件夹下

文件路径

<html>
   <body>
      <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))

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

效果截图

使用POST请求,进行表单提交

POST请求

请求响应

请求响应

控制台输出信息

terminal info POST

修改HTMLPOST为GET,再进行上述操作

terminal info GET

可以发现使用Get请求一样可以得到对应的结果,不过我们一般在表单提交都会使用POST请求,因为表单请求会涉及到文件上传,而POST请求对文件上传的大小没有限制,而GET请求对提交请求的文件大小会存在限制。

注意两种方式取值的方式

# POST
user = request.form['name']
# GET
user = request.args.get('name')

如果你希望访问源码:Flask-code gitee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值