1.利用methods限制访问方式
render_template
:返回页面
request
:一切浏览器请求的内容都封装到request对象中
request.method
:来判断访问方式
method
:设置请求访问方式
from flask import Flask,render_template,request
@app.route('/login',methods=['GET','POST'])
def login():
if request.method=='POST':
return '注册成功了'
return render_template('login.html')
#同一个路由可以装饰多个视图,然后按照先后顺序输出
@app.route('/hello',methods=['POST'])
def hello1():
return 'hello1'
@app.route('/hello',methods=['GET'])
def hello2():
return 'hello2'
if __name__ == '__main__':
app.run()
2. 可以通过url_map属性来查看flask中的整体路由信息
from flask import Flask,render_template,request
app=Flask(__name__)
@app.route('/index')
def index():
return 'hello world'
if __name__ == '__main__':
print(app.url_map)
app.run()
"""
打印结果:
Map(
[ index>,
' (OPTIONS, HEAD, GET) -> static>]
)
如果存在 GET ,那么也会替你自动地添加 HEAD,无需干预。它会确保遵照 HTTP RFC(描述 HTTP 协议的文档)处理 HEAD 请求,所以你可以完全忽略这部分的 HTTP 规范。同样,自从 Flask 0.6 起, 也实现了 OPTIONS 的自动处理。
你不知道一个 HTTP 方法是什么?不必担心,这里会简要介绍 HTTP 方法和它们为什么重要:
HTTP 方法(也经常被叫做“谓词”)告知服务器,客户端想对请求的页面 做 些什么。下面的都是非常常见的方法:
3.多个路由修饰一个视图
路由解析时,是从里到外
from flask import Flask,render_template,request
app=Flask(__name__)
@app.route('/hi1')
@app.route('/hi2')#装饰器从里到外
def hi():
return 'hi'
if __name__ == '__main__':
app.run()
from flask import Flask,render_template,request,redirect,url_for
app=Flask(__name__)
#重定向
@app.route('/login2',methods=['GET','POST'])
def login2():
if request.method=='POST':
#1.第一种方式:使用路由
# return redirect('/index')
#2.第二种方式:使用视图函数名称
url=url_for('index')
return redirect(url)
return render_template('login.html')
if __name__ == '__main__':
app.run()
7. 动态路由
获取路由中传递的参数,路由传递的参数默认当做string
处理
from flask import Flask
app=Flask(__name__)
#127.0.0.1:5000/index/123
#传递的参数默认是字符串类型
@app.route('/index/')
def index(num):
print(type(num))#
return 'index....,num的值:%s'% num
#指定接收数据类型 int
@app.route('/index2/')
def index2(num):
print(type(num))
return 'index2...,num的值是:%s'% num
#path :可以接受带/的参数
@app.route('/index3/')
def index3(num):
return 'index3..,num的是:%s'% num
if __name__ == '__main__':
app.run()