页面跳转是网页开发中需要实现的最基本的一个功能,用户点击页面中的一个超链接或者按钮,就会跳转到一个新页面。那么在Flask当中是如何实现的呢?
在下面的例子中,也会用到url_for(),还有另外一个redirect。目前几乎所有的网站都需要用户登录,才能发布新内容或者做相关的更改。下面就以用户要发布一篇新文章,点击发布文章按钮为例,判断如果用户登录了,就直接跳转到发布新文章页面,如果用户没有登录,就跳转到登录页面。
代码如下:
from flask import Flask, url_for, redirect
app = Flask(__name__)
@app.route("/")
def index():
return "这是首页!"
@app.route("/login/")
def login():
return "这是登录页面!"
@app.route("/publish_howto/<is_login>")
def publish_howto(is_login):
if is_login == '1':
return "欢迎来到发布howto页面!"
else:
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
首先要导入url_for和redirect
然后写一个登录页面视图函数:login
再写一个发布文章页面:publish_howto,需要注意的是需要加一个参数,来判断用户是否登录,我们把参数命名为is_login,后面学了cookie之后再做代码优化,现在只是模拟一下,知道了这个逻辑就好。在发布文章的视图函数中就要判断了,如果用户已经登录,就留在发布页面,返回发布页面的内容给用户;如果用户没有登录,就重定向到用户登录页面。
实际效果见下:
首先来模仿一下用户未登录,访问发布文章页面,输入URL: http://127.0.0.1:5000/publish_howto/0 然后回车,用户就会被重定向到登录页面:
再来模仿一下用户已经登录,访问发布文章页面,输入URL: http://127.0.0.1:5000/publish_howto/1 然后回车,用户就会留在发布文章页面:
嗯,感觉很简单啊!
小结:
今天的重点在: return redirect(url_for('login'))
页面重定向要用到redirect()函数,而重定向的页面URL,我们最好用url_for反转得到最终的URL地址,不需要写死URL地址,这样的好处就是以后URL地址有变,你也不需要更改,大大减少了代码维护,效率得到了大大的提高啊!
转载于:https://blog.51cto.com/jiaszwx/2313178