路由

使用装饰器修饰的视图函数,就是controller控制器,内部需要尽量简洁,复杂逻辑可以封装到其他模块进行引用。

定义路由

@app.route

这种方法是首选
@app.route(‘/‘)
def index():
return ‘

hello world

app.add_url_rule

app.add_url_rule(‘路径如/‘,’func_name即视图函数名称’,endpoint默认会是视图函数的名称)
实际上@app是封装了这个方法的装饰器。
如果基于类的视图,即即插视图时,需要用到他。

路由动态参数

即路由内部的<>内部的部分,可以是普通的参数名,也可以是类型加参数名,例如/user/,或者/user/

string (缺省值) 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 类似 string ,但可以包含斜杠
uuid 接受 UUID 字符串

例如是一个动态的url,通过传参向数据库请求获取相应的数据,那么可以通过使用path的数据类型来做多级url,因为该数据类型允许多个/符号,而默认的是string类型,不包括/

  1. @app.route("/api_v1/<path:subpath>")
  2. def api_v1(subpath):
  3. # print(subpath)
  4. import pandas as pd
  5. from sqlalchemy import create_engine
  6. conn = create_engine("mysql://username:passwd@host/db",encoding='utf8', echo=True)
  7. print(pd.read_sql("select '{}'".format(subpath),conn))
  8. return "<html><h1>{}</h1></html>".format(subpath)

查看所有路由信息

flask route

命令行flask route
有Endpoint、Methods和Rule
static是默认的

app.url_map

代码内查看,可以print(app.url_map),是一个Flask封装的Map对象

遍历所有的路径和视图函数:
for i in app.url_map.iter_rules():
print(“path={},view_func={}”.format(i.endpoint,i.rule)

视图函数

return

return要么是返回一个字符串打印到网页页面上,要么是模板响应。