Flask框架路由和视图用法实例分析
技术  /  管理员 发布于 7年前   423
本文实例讲述了Flask框架路由和视图用法。分享给大家供大家参考,具体如下:
#1.导入Flask类from flask import Flask#2.创建Flask对象接收一个参数__name__,它会指向程序所在的包app = Flask(__name__)#3.装饰器的作用是将路由映射到视图函数[email protected]('/')def index(): return 'Hello World'#4.Flask应用程序实例的run方法,启动WEB服务器if __name__ == '__main__': app.run()
1.Flask对象参数:
参数 | 描述 |
---|---|
name | (必写)代表程序主函数__main__ |
static_folder | 静态资源文件夹(默认static) |
static_url_path | 静态资源路径(默认/static) |
template_folder | 模板文件夹(默认templates) |
2.run方法参数:
参数 | 描述 |
---|---|
ip | IP地址 |
port | 端口 |
debug | 默认为False,更改为True可以不重启服务器进行服务器修改(ctrl+s保存即可), 并且报错后会有相应提示 |
debug 默认为False,更改为True可以不重启服务器进行服务器修改(ctrl+s保存即可), 并且报错后会有相应提示
@app.route("/路径"):路由装饰器,可以通过路径执行被装饰的函数
app.url_map:可查看当前路由函数和路径
1.动态参数:@app.route("/路径/<类型:变量>")
常用类型
类型 | 描述 |
---|---|
int | 整型 |
float | 浮点型 |
path | 字符串型 |
自定义类型:
(1)编写⾃定义转换器类,继承BaseConverter
(2)编写init⽅法
(3)初始化⽗类,⼦类变量
(4)将⾃定义转换器添加到默认转换器列表中
例:
from flask import Flaskfrom werkzeug.routing import BaseConverter#1.自定义类,继承自BaseConverterclass MyRegexConverter(BaseConverter): # 2.编写方法, init def __init__(self,map,regex): # 3.初始化, 父类, 子类变量 super(MyRegexConverter, self).__init__(map) self.regex = regexapp = Flask(__name__)# 4.将自定义转换器添加到,系统默认的转换列表中app.url_map.converters["re"] = MyRegexConverterprint(app.url_map.converters)# 接收三位整数# 通过re调用的init方法, 参数1[默认]: app.url_map, 参数2: 自己定义的规则@app.route('/<re("\d{3}"):number>')def hello_world(number): return "the re number is %s"%number# 接收四位整数@app.route('/<re("\d{4}"):number>')def get_four_number(number): return "the four number is %s"%number# 接收手机号@app.route('/<re("1[3456789]\d{9}"):mobile>')def get_mobile_number(mobile): return "the mobile number is %s"%mobileif __name__ == '__main__': app.run()
2.指定请求方式:
@app.route("/路径",methods=["⽅式1","方式2"])
方式:GET(默认),POST,PUT,DELETE
3.视图函数返回内容:
(1)直接返回响应体对象:
返回响应体、状态码、响应头
return "hello","666",{"name":"zhangsan"}
(2)手动创建响应体对象:
response = make_response("响应体")response.status = "状态码 状态码描述"response.headers = {响应头键值对}(response.headers["Content-Type"] = "application/json")return response
(3)返回json:
jsonify(dict)jsonify(key=value,key2=value2)
(4)重定向:
重定向:redirect("路径")
反解析:url_for("函数",key=value)
二者配合使⽤可以传递参数
例:
"""url_for, 反解析,根据视图函数名称找到,视图函数的路径地址,可以携带参数格式: url_for('函数名',key=value), 返回的是一个地址(字符串)"""""from flask import Flask,url_for,redirectapp = Flask(__name__)# 京东, 代号[email protected]('/jingdong')def jingdong(): #print(url_for("taobao")) #/taobao # print(url_for("taobao",token=111)) #/taobao/111 response = redirect(url_for("taobao",token=111)) return response#易迅, 代号[email protected]('/yixun')def yixun(): response = redirect(url_for("taobao",token=222)) return [email protected]('/other')def other(): response = redirect(url_for("taobao",token=888)) return response# 淘宝@app.route('/taobao/<int:token>')def taobao(token): #判断哪个平台过来的用户 if(token == 111): return "欢迎京东用户,光临淘宝,给你打9折" elif(token == 222): return "欢迎易迅用户,光临淘宝,给你打5折" else: return "其他用户"if __name__ == '__main__': app.run()
4.异常处理:
(1)抛出异常(abort):
abort(code)
code为HTTP错误状态码
(2)异常捕获(errorhandler):
code为HTTP错误状态码@app.errorhandler(code)def fun():…
1.从类中加载:app.config.from_object()
例:
class Config(object): #调试模式 DEBUG=Trueapp.config.from_object(Config)
2.从配置⽂件中加载:app.config.from_pyfile()
例:
app.config.from_pyfile("config.ini")
3.从环境变量加载(了解):
app.config.from_envvar()
希望本文所述对大家基于flask框架的Python程序设计有所帮助。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号