学习记录
在项目整合的过程中,我发现了一些由于对python的一些语法以及flask了解不深入造成的代码理解上的困难,于是,对一些知识进行了进一步的理解;且学习了一些文件配置规范,下面是学习过程中的一些笔记和总结
装饰器及其在flask路由中的使用
装饰器
为什么用装饰器?
在不改变原函数的基础上,对原函数执行前后进行自定义操作。
"""一个简单的装饰器"""
def wapper(func)
@functools.warps(func)#用于使得新返回的inner保存被装饰的func函数的名字、注释等原信息 flask视图中添加装饰器时注意使用这句话以保留原信息
def inner(*args,**kwargs):
"""
一些扩展操作
"""
return func(*args,**kwargs)
return inner #返回inner这个函数(一个返回值为func(*args,**kwargs)的方法!)
函数 @wapper
def function():
return 0 的执行流程:
先执行wapper(function),返回值为inner;@语法糖执行:新function=warpper(旧function) 后续再用到function时,function已变为inner,@functools.warps(func)这句话的添加可以使inner保留原function的名字、注释等信息
flask路由
本质:存储url与函数的对应关系(存放在app中的map对象)
flask添加路由有两种方式
#1.常用
@app.route('/index',method=['GET','POST'])
def index():
return "Index"
#2.是第一种方式在执行warpper(旧function)的过程中调用的一个函数
def order():
return 'Order'
app.add_url_rule('/order',view_func=order)
Flask配置文件
使得settings.py 包含各种类,存储测试、生产等环境下的数据库等配置信息
在主程序中使用app.config.from_object(“settings.DevelopmentConfig”)
参考博客:wupeiqi老师关于flask介绍的博客
面向对象封装的思想
-
对面向对象的认识:
-按属性和功能进行划分:方法封装到类中
-将方法中共同的参数封装到对象中:把公共值封装到对象中 -
使用类的情况:
a.一个需要传递很多值->将这些之封装到类中,用这些需要传递的值赋值给对象,则函数只需要接收这个对象 应用场景:base.response
b.给了一些值,将数据加工 eg. django 自定义分页
工作日志
今日已完成目标:
1、用户模块与饮食记录模块对接
2、饮食推荐算法嵌入
正在进行:
1、模块对接(剩余饮食收藏、推荐模块)
2、社交云模块样式调整
3、饮食记录与饮食识别对接(识别饮食记录模块上传的图片)
4、界面优化
5、代码整合
尚未开始:
1、各模块功能测试