本文实例讲述了Flask框架路由和视图用法。分享给大家供大家参考,具体如下:
创建一个简单flask框架程序
#1.导入Flask类 from flask import Flask #2.创建Flask对象接收一个参数__name__,它会指向程序所在的包 app = Flask(__name__) #3.装饰器的作用是将路由映射到视图函数index @app.route('/') 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)编写"htmlcode">
from flask import Flask from werkzeug.routing import BaseConverter #1.自定义类,继承自BaseConverter class MyRegexConverter(BaseConverter): # 2.编写方法, init def __init__(self,map,regex): # 3.初始化, 父类, 子类变量 super(MyRegexConverter, self).__init__(map) self.regex = regex app = Flask(__name__) # 4.将自定义转换器添加到,系统默认的转换列表中 app.url_map.converters["re"] = MyRegexConverter print(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"%mobile if __name__ == '__main__': app.run()
2.指定请求方式:
@app.route("/路径",methods=["","方式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)
二者配合使"htmlcode">
""" url_for, 反解析,根据视图函数名称找到,视图函数的路径地址,可以携带参数 格式: url_for('函数名',key=value), 返回的是一个地址(字符串) """"" from flask import Flask,url_for,redirect app = Flask(__name__) # 京东, 代号111 @app.route('/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 #易迅, 代号222 @app.route('/yixun') def yixun(): response = redirect(url_for("taobao",token=222)) return response @app.route('/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=True app.config.from_object(Config)
2.从配置"htmlcode">
app.config.from_pyfile("config.ini")
3.从环境变量加载(了解):
app.config.from_envvar()
希望本文所述对大家基于flask框架的Python程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 许秋怡.1995-电影少女【丽音唱片】【FLAC分轨】
- 【中国艺术歌曲典藏】温雅欣《她比烟花寂寞》紫银合金SQCD【低速原抓WAV+CUE】
- 张国荣《FinalEncounter》头版限量编号MQA-UHQ[低速原抓WAV+CUE].
- 发烧萨克斯-雪国之春(SRS+WIZOR)[原抓WAV+CUE]
- 王铮亮《慢人理论》[320K/MP3][175.31MB]
- 王铮亮《慢人理论》[FLAC/分轨][524.11MB]
- 陈致逸《赴梦之约 游戏主题原声音乐》[320K/MP3][35.82MB]
- 沈文程.1998-历年畅销歌曲精选3CD旧情也绵绵【乡城】【WAV+CUE】
- 群星.2022-福茂巨星·时空之轮日本唱片志系列DISC1黄舒骏-为你疯狂【福茂】【WAV+CUE】
- 群星.2022-福茂巨星·时空之轮日本唱片志系列DISC2范晓萱-RAIN【福茂】【WAV+CUE】
- 王闻-《男人四十4》[正版CD低速原抓WAV+CUE]
- 青燕子-八只眼演唱组《爱心》[WAV+CUE]
- 祁露想着你的好》WAV+CUE
- 陈致逸《赴梦之约 游戏主题原声音乐》[FLAC/分轨][159.96MB]
- 贵族音乐《睡眠自然流水声 ASMR白噪音背景音》[320K/MP3][155.72MB]