Flask教程(八)重定向
程序员文章站
2022-05-06 16:13:38
...
软硬件环境
- Windows 10 64bit
- Anaconda3 with python 3.7
- PyCharm 2019.3
- Flask 1.1.1
简介
我们知道,每一次客户端向服务器发送http
请求,服务器都会返回一个http
状态码,如200就表示请求成功,404就表示访问的资源不存在。针对不同的http
状态码,返回的http
主体内容也不一样。
Flask重定向
在Flask
中,Flask
对象提供了redirect
方法来实现重定向。redirect
方法的语法如下
Flask.redirect(<location>,<status-code>, <response> )
其中
- location: 重定向的
url
- status-code:
http
头部的状态码 - response: 响应实体
在实际场景中,redirect
一般结合url_for
来使用,而url_for
会根据视图函数名称得到当前所指向的url
来看个实例
login.html
文件内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form method = "post" action = "http://localhost:5000/validate">
<table>
<tr>
<td>Email</td>
<td><input type = 'email' name = 'email'></td>
</tr>
<tr>
<td>Password</td>
<td><input type = 'password' name = 'password'></td>
</tr>
<tr>
<td><input type = "submit" value = "Submit"></td>
</tr>
</table>
</form>
</body>
</html>
这是一个简单的登录界面,需要输入email
和password
来进行登录
run.py
文件内容
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
@app.route('/login')
def login():
return render_template('login.html')
@app.route('/validate', methods=['POST'])
def validate():
if request.method == 'POST' and request.form['email'] == 'aaa@qq.com' and request.form['password'] == 'test':
return redirect(url_for('success'))
return redirect(url_for('login'))
@app.route('/success')
def success():
return 'Logged in successfully.'
if __name__ == '__main__':
app.run(debug=True)
主要看看服务器端对用户登录是的验证部分validate
,当满足一定条件时,我们跳转到success
视图函数所指定的url
,否则,回到登录界面
启动Flask
服务,访问http://127.0.0.1:5000/login
我们填入email
为aaa@qq.com
,password
为test
如果email
或password
有一项错误的话,页面回到登录界面
源码下载
https://github.com/xugaoxiang/FlaskTutorial