路由在MVC架构的web架构中重要的概念:在Flask框架中,路由表示用户请求的URL找出其对应的处理函数
1、注册路由
用户请求的URL与视图函数之间的映射,flask框架根据HTTP请求的URL在路由表中匹配预定义的URL规则,
找到对应的视图函数,并将函数执行的结果返回给服务器,route装饰器:绑定url规则与视图函数
from flask import Flask
# 导入了类 Flask ,这个类的实例化是WSGI 应用。第一个参数是应用模块的名称。
# 如果你使用的是单一的模块(就如本例),第一个参数应该使用 __name__。
# 因为取决于如果它以单独应用启动或作为模块导入, 名称使用 '__main__' 。
app=Flask(__name__)
# 使用装饰器 route() 告诉 Flask 哪个 URL 才能触发函数
@app.route('/')
# 定义一个函数,该函数名也是用来给特定函数生成 URLs,并且return返回显示在用户浏览器上的信息。
def helloword():
return 'hello world!'
# 用函数 run() 启动本地服务器来运行我们的应用
app.run()
2、为路由指定其支持的HTTP方法:get/post
通过methods=['POST','GET']指定其能够支持的多种方法,指定跳转过程中的请求方式
from flask import Flask
app=Flask(__name__)
@app.route('/html',methods=['post'])
def hello_word():
return 'post方法'
@app.route('/')
def hello_word_1():
return '''
<form action='/html' method='post'>
名字:<input type='text' name='name'></input><br\>
密码:<input type='passwd' name='passwd'></input><br\>
提交:<input type='submit' name='submit'></input>
</form>
'''
app.run()
3、如何动态匹配URL
URL变量:用<>指定变量,默认情况下变量被视为不包含/的字符串
使用path转换器告诉flask对象,改变这一默认的行为
path:可以使用/作为URL规则的字符串
常见转换器:
string:不包含/
path:包含/
int:只用URL中的变量是整数型时才匹配,并将变量装换为int型
float:只有URL中的变量是浮点型时才匹配,并将变量转换为float型。
并且该变量与视图函数的参数一致
from flask import Flask
app = Flask(__name__)
@app.route('/index')
def index():
return '''
<ul>
<li><a href='/user/MS/friend/X'>here1</a></li>
<li><a href='/user/Kobe/friend/Y'>here2</a></li>
<li><a href='/user/Jarden/friend/Z'>here3</a></li>
</ul>
'''
@app.route('/user/<uname>/friend/<fname>')
def uf(uname,fname):
return "%s\'s friend - %s\'s danggan"%(uname,fname)
if __name__ == '__main__':
app.run(debug=True)