大纲
前文中我们讲到,url(路由)和函数视图的映射关系,也就是通过对应的url,可以返回对应的视图函数。当然我们通过视图函数也能找到对应的url路径,这可以通过url_for来完成。接着我们讲解重定向的知识点。
- url_for
- 重定向
url_for
首先,我们说说url_for的意义,大家在浏览网页的时候都会有跳转,假设我们写跳转的时候,用url路径,当整个网站路径需要修改时,就需要更改这些代码,如果我们使用的是url_for的话,修改量就很少(通常视图函数是不修改的)。
接着,我们看看url_for的使用:
@app.route('/post/list/<page>/')
def my_list(page):
return 'my list'
print(url_for('my_list',page=1,count=2))
# 构建出来的url:/my_list/1/?count=2
重定向
重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。
具体操作如下:
from flask import Flask,request,redirect,url_for
app = Flask(__name__)
@app.route('/login/')
def login():
return '这是登录页面'
@app.route('/profile/')
def profile():
if request.args.get('name'):
return '个人中心页面'
else:
# redirect 重定向
return redirect(url_for('login'))