flask学习笔记(四)-- 反转URL与重定向

   反转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/


三、总结
 
无。

猜你喜欢

转载自blog.csdn.net/feit2417/article/details/79839253