欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

Flask教程(八)重定向

Flask Web 迷途小书童 4年前 (2020-03-23) 3326次浏览 0个评论

软硬件环境

  • Windows 10 64bit
  • Anaconda3 with python 3.7
  • PyCharm 2019.3
  • Flask 1.1.1

视频看这里

此处是youtube的播放链接,需要科学上网。喜欢我的视频,请记得订阅我的频道,打开旁边的小铃铛,点赞并分享,感谢您的支持。

简介

我们知道,每一次客户端向服务器发送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

flask

我们填入emailtest@gmail.compasswordtest

flask

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

flask

源码下载

https://github.com/xugaoxiang/FlaskTutorial

Flask系列教程

更多 Flask 教程,请移步

https://xugaoxiang.com/category/python/flask/

喜欢 (0)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.