Flask交流

二、URL反转,页面跳转和重定向

2018-08-21  本文已影响143人  十柒年

1、内容回顾

上篇文章简单说明了一下如何创建一个flask web应用程序,输出了一个hello world,这篇文章就和大家一起学习下flask框架中的url反转,页面跳转,以及重定向。

2、URL反转

url反转就是通过视图名称获得url。所用的函数是url_for()。那url反转有什么用呢?一般url反转是和重定向一块使用的,比如我们的网站主页为www.a.com,用户个人资料页是 www.a.com/zhangsan/detail,如果用户没有登录直接输入 www.a.com/zhangsan/detail,能看到东西吗?应该是不能的,因为用户还没登录,所以应该是直接跳转到登录页面,这里面就用到了url反转和重定向,重定向下面会讲到。下面咱们看看如何反转。

@app.route('/')
def index():
    print(url_for('my_list'))
    print(url_for('article',id='aaaa'))
    return 'Hello World!'

这里面就是在运行index视图函数的时候,在pycharm控制台打印出/my_list,以及/article/aaaa,如图。


image.png

同时url_for()还可以用来加载文件,用VS2017,创建一个flask应用程序后可以发现在layout.html中写的有url_for()
,如图。


image.png

3、页面跳转

在地址栏输入不同的地址后,可以跳转到对应的页面。在这里我们先不添加页面,直接返回不同的字符串看看效果。代码如下

@app.route('/list/')
def my_list():
    return 'list'

@app.route('/article/<id>/')
def article(id):
    return u'请求的参数为:%s'% id

然后我们运行下,在浏览器地址栏接着输入 /list 会出现这个效果。


image.png

然后在浏览器输入/article/2,也出来了对应的字符串。这就是简单的页面跳转。


image.png

4、重定向

重定向使用的方法为redirect()。来看一段代码。

@app.route('/')
def index():
    return redirect('www.baidu.com')

这段代码运行的结果就是,页面打开直接跳转到了百度主页,这个就是重定向。说白了就是重新定义浏览器的地址。在看一段代码。

@app.route('/')
def index():
    login_url = url_for('login')
    return redirect(login_url)
    return u'这是首页'

这里就是先获取login视图函数所对应的url地址,然后重定向到这个地址。现在咱们回到上面的一个问题,如果用户还没有登录直接输入了www.a.com/zhangsan/detail,咱们该怎么做?请看代码。

@app.route('/question/<is_login>/')
def question(is_login):
    if is_login == '1':
        return u'发布问答页面'
    else:
        return redirect(url_for('login'))

运行试一下效果。现在我是刚输入了地址,还没按回车确定。


image.png

当我按下回车的时候,页面直接跳转到了登录页面


image.png
咱们在试一次,这个输入/question/1.
image.png

这次咱们看的输入/question/1就代表咱们是登录过了,就可以进行登录后的操作了,如果没有登录,则直接跳转到登录页面。

5、结语

好了,今天的代码就分享这么多。下篇文章教大家如何使用jinja2模板,以及如何向页面传递参数。
Study hard and make progress every day.

更多学习资料请关注"爱游戏爱编程"。


爱游戏爱编程.jpg
上一篇下一篇

猜你喜欢

热点阅读