开始正式有模有样的部署服务端,开始将服务端的各个功能都各自抽离出来成一个 *.py* ,逐渐细化并保持各个部分封装好。
主要有以下几个文件:
server.py
服务器的主要启动文件utlis.py
将log功能封装好,在print()上加上时间routes.py
封装好各个路由的处理函数models.py
储存数据的基类,封装好各个@classmethod 方法models文件夹
具体数据的类,继承自models.pydata文件夹
暂时用.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等相关知识