欢迎加入知了课堂,学习flask

Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002

Python Flask框架——全栈开发: http://study.163.com/course/courseMain.htm?courseId=1004507006

 

 

 

   反转URL

 

通过url_for函数可以实现视图函数到URL路径的转换,服务器可以利用这个路径实现视图函数的重定向。


 

一、基本使用方法(不带参数)

    url_for('函数名')

例如:

 

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

 

print(url_for('my_list'))  #构建出来的url:/my_list/

 

 

 

 

二、带参数的url_for()

 url_for('函数名',参数1=xxx,参数2=xxx)

`url_for`第一个参数,应该是视图函数的名字的字符串。后面的参数就是传递给`url`。

如果传递的参数之前在`url`中已经定义了,那么这个参数就会被当成`path`的形式给

`url`。如果这个参数之前没有在`url`中定义,那么将变成查询字符串的形式放到`url`中。

例如:

 

@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

 

 

 

三、使用url_for的好处

    1.方便,如果对应路径变化而函数名没有改变的话(函数的返回随之改变),就不用修改url_for里面的函数名了。

    2.安全可靠,`url_for`会自动的处理那些特殊的字符,不需要手动去处理。

例如:

    url = url_for('login',next='/')

    # '/'是一个特殊字符,服务器不好处理。函数会自动的将/编码,不需要手动去处理。

    #输出的 url=/login/?next=%2F

 

四、总结

强烈建议以后在使用url的时候,使用`url_for`来反转url。

 

 

再加一篇,字数不多,跟上面知识有关联~

 

            重定向

刚学习了反转url,简单说是通过视图函数名转换到url路径的过程。而重定向是将原本的url重新定向成为一个新的url,可以实现页面的跳转。故两者可以结合使用!在页面上的体现就是,浏览器从一个页面跳到另一个。比如,当用户访问一个权限网页,这时用户并没有登录,我们就给他重定向到登录界面去。

 

一、重定向分为永久性重定向和暂时性重定向

* 永久性重定向:`http`的状态码是`301`,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入`www.jingdong.com`的时候,会被重定向到`www.jd.com`,因为`jingdong.com`这个网址已经被废弃了,被改成`jd.com`,所以这种情况下应该用永久重定向。

 

* 暂时性重定向:`http`的状态码是`302`,表示页面的暂时性跳转。比如访问一个需要权限的网址,如果当前用户没有登录,应该重定向到登录页面,这种情况下,应该用暂时性重定向。

 

二、在flask中的使用   

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' ) )
        
搜索引擎输入:127.0.0.1:5000/profile/?name=xxx    
浏览器展示:个人中心页面

搜索引擎输入:127.0.0.1:5000/profile/   
浏览器展示:这是登录页面

其中
url_for( 'login' ) 等价于 /login/


三、总结
    无。

 

 

 

 

欢迎加入知了课堂,学习flask

Python Flask系列(1)——基础:http://study.163.com/course/courseMain.htm?courseId=1004091002

Python Flask框架——全栈开发: http://study.163.com/course/courseMain.htm?courseId=1004507006