欢迎加入知了课堂,学习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