flask第十四篇——重定向
我们都知道京东的url是www.jd.com
,但是当你输入www.jingdong.com
时候,你会发现地址自动跳转到了www.jd.com
,这种技术手段就叫做重定向
。
重定向
分为永久重定向
和临时重定向
像京东这种只要你输入www.jingdong.com
就会跳转到另一个地址的情况就叫做永久重定向,也就是说京东不希望你再用这个地址了;而临时重定向
则可能是判断你的登录状态,比如有一些网站你进入后会判断你是否登录,如果登录就跳转页面A,如果没登录就跳转页面B,这种就是临时重定向
的情况(后面写项目的时候会用到,当然,讲的所有知识点都是为最后做项目做准备的)。
我们先来看一下源代码,先导入import redirect
包,然后Ctrl+b,进入源码:
可以看到redirect
方法传入三个参数,其中第二个参数code
就是设置重定向类型的,302
代表临时重定向
,301
代表永久重定向
,默认302
。知道这些就够了。
接着我们看一下重定向的例子,这是一个简单的登录验证,如果用户传递了name
就说明登录了(name通过查询字符串方式传递),如果没有传name
就跳转到登录页面:
# coding: utf-8
from flask import Flask, url_for, redirect
import flask
app = Flask(__name__) # type: Flask
app.debug = True
# 根目录
@app.route('/')
def hello_world():
name = flask.request.args.get('name')
if name:
return u'您的用户名是:%s' % name
else:
# 跳转页面
return redirect(url_for('login'))
@app.route('/login/')
def login():
return u'这是登录页面'
if __name__ == '__main__':
app.run()
我们到页面验证一下,你还记得什么是通过查询字符串的方式传参
吗?还记得url_for
的使用吗?这里就用到了这两个知识点哦~
我们先进入127.0.0.1:5000
以及看到地址自动变成了http://127.0.0.1:5000/login/
也就是我们的重定向起作用了:
再通过查询字符串的方式给name传参:127.0.0.1:5000/?name=meng:
页面是我们模拟的登录后的页面。这就是一个简单的重定向啦~
-
补充题外话
回看一下我们的控制台:
打印了上图内容,有没有觉得很眼熟?没错,这不就是我们整天说接口测试
的接口吗!http请求方式是GET
,参数是name
。所以学flask开发,不知不觉你就会明白接口测试的真正含义啦~
请关注公众号:自动化测试实战