美文网首页Flask交流
二、URL反转,页面跳转和重定向

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

作者: 十柒年 | 来源:发表于2018-08-21 16: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

    相关文章

      网友评论

        本文标题:二、URL反转,页面跳转和重定向

        本文链接:https://www.haomeiwen.com/subject/pmkjiftx.html