后端_第三课_开始分配服务端各个功能

开始正式有模有样的部署服务端,开始将服务端的各个功能都各自抽离出来成一个 *.py* ,逐渐细化并保持各个部分封装好。

主要有以下几个文件:

  • server.py
    服务器的主要启动文件

  • utlis.py
    将log功能封装好,在print()上加上时间

  • routes.py
    封装好各个路由的处理函数

  • models.py
    储存数据的基类,封装好各个@classmethod 方法

  • models文件夹
    具体数据的类,继承自models.py

  • data文件夹
    暂时用.TXT储存数据信息

  • static文件夹
    静态文件目录

  • templates文件夹
    储存HTML文件


TIPS

  • 在server.py把解析URL的功能封装起来到 response_for_path 函数,解析出URL的路由后从routes.py里调用相应的函数处理

  • 创建一个 Request类,临时储存从URL解析出来的信息(method,path,query,body,form)等,方便后面的处理函数处理

  • 专门创建一个process_request函数来处理接受的到新的请求,在run函数里用_thread.start_new_thread调用,应该是创建新的线程处理请求

  • 储存数据的基类MODEL定义了很多@classmethod的方法,在路由函数里调用类方法,例如User.all(),而没有定义类方法save()的需要 u=User(form),u.save()

  • class方法的new()和all()方法不是很理解,当储存新的信息或者查找信息时,将数据从data文件夹里导入,用ms = [cls.new(m) for m in data]的方式将data的数据全部转换成model的实例,感觉多此一举,(因为这些信息本来就是储存过的的),不过我的理解是全部转换成MODEL的实例后,方便在其他的类方法里调用(find_by,find_all)?

  • 因为每次储存新的数据都要将数据全部从DATA里导出并且用上面的方法转换成model的实例,储存后还要用l = [m.__dict__ for m in models]取出所有实例的属性保存。


课后作业

  • 把User类的验证登陆方法validate_login更新,用后面定义的find_by方法从DATA里寻找用户信息核实。

  • Request类新添Header属性,将请求头的字段用字典的方式储存

  • 为Model类定义find_by()和find_all()方法,用于从DATA里寻找信息

  • 给Model类 __init__(self,form)Request.form里获取 id 属性,在用save()保存数据时,给每个数据加上一个ID属性

  • 开始了解CSS等相关知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值