Flask教程(八)重定向

软硬件环境

  • 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>

这是一个简单的登录界面,需要输入emailpassword来进行登录

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'] == 'test@gmail.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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPPcExjy-1589878920593)(https://code.xugaoxiang.com/xugaoxiang/blog/raw/master/images/python/flask/flask_8_01.png)]

我们填入emailtest@gmail.compasswordtest

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EK2j8WJB-1589878920598)(https://code.xugaoxiang.com/xugaoxiang/blog/raw/master/images/python/flask/flask_8_02.png)]

如果emailpassword有一项错误的话,页面回到登录界面

flask

源码下载

https://github.com/xugaoxiang/FlaskTutorial

微信公众号

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷途小书童的Note

请博主喝矿泉书!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值