以我的想法,谈谈自己用python写的web服务器,如何用装饰器实现路由,以及实现伪静态前端页面,和,如何与自己写的mini_web框架实现前端页面与后端数据库交互,实现动态查询

以我的想法,谈谈自己用python写的web服务器,如何用装饰器实现路由,以及实现伪静态前端页面,和,如何与自己写的mini_web框架实现前端页面与后端数据库交互,实现动态查询

今天下午,闲的没事干,于是就打开Ubantu,开始瞎捣鼓。
这里说一下,我今天下午到底干了什么——今天下午只干了一件事:如何用自己写的web服务器,实现伪静态前端页面,以及如何与自己写的mini_web框架实现前端页面与后端数据库交互,实现动态查询。这里说一下,这个事确实挺容易实现,并且实现起来也十分的简单,不复杂。

下面,咱就来谈一谈,到底通过种方式,我可以干这件事

【问题一】
python中,如何用装饰器实现路由
【问题二】
python写的服务器及mini_web框架,如何实现伪静态前端页面
【问题三】
如何与自己写的mini_web框架实现前端页面与后端数据库交互,实现动态查询

不扯别的,直奔主题:

【问题一】python中,如何用装饰器实现路由

首先,我们来挨个分析一下这几个问题,这里呢,我先把之前哦我写的服务器和mini_web框架代码拿出来,我们先来看看,什么样子,你自己先思考思考,我需要怎么做,才可以达成目的:

下面是拿出来的之前写好的 旧版本的多进程的web服务器和mini_web框架

在这里插入图片描述在这里插入图片描述

当开始我的描述之前,我们先来思考一件事——我通过带参数的装饰器,可以完成什么功能?
带参数的装饰器,简单一点的,说白了就是三个函数嵌套,子层返回一层,即在普通装饰器之上,又加了一层。带参数的装饰器呢,依我的看法,没有什么思维堵塞的地方,比较容易理解。
下面呢,举一个 demo,你先理解理解:
在这里插入图片描述
这里为社么要说这个带参数的装饰器呢,就是因为,接下来,我们实现的路由功能,和这个装饰器有关系,这里,简单说一下 装饰器怎么进行路由:
首先,装饰器对函数进行装饰,我们把装饰器装饰的是时候得到的函数的引用,传入到字典文件里面,给它记录下来,然后判断调用函数的时候,通过这个字典文件取出函数的引用,我们的目的就达到了。可能你会想,路由是什么?路由就像是一个地址,我想找到你,就需要这个地址。这里,咱谈论的路由 是函数的引用。说完了原理,下面就来看看,我是怎么实现的!!!在这里插入图片描述

【问题二】python写的服务器及mini_web框架,如何实现伪静态前端页面

对于这个问题,我只大略的说一下,不细说,因为比较容易实现:
我实现这个问题的办法,大体说一下:当我的服务器收到的请求,后缀是 “.html” 的时候,我传给mini_web框架,mini_web框架在解析的时候,按照动态页面解析,这就实现了伪静态。
方法也容易实现,改一下传递的参数就可以了。修改的有三处:一处是 web服务器,一处是 mini_web框架,另外一处,你需要修改 你的页面的超链接。
我们的重点呢,放在第三个问题上,这里就不多说了,先进入我们今天的重点:

【问题三】如何与自己写的mini_web框架实现前端页面与后端数据库交互,实现动态查询

这里呢,确实实现这个功能之后,感觉很爽,因为学python接近一个月了,这还是第一次实现数据库动态查询。因为这里呢,本机 windows受限制,Mysql装不上,所以就用 Ubantu做了演示。期间也遇到了一些问题,也吸取了很多的教训。也学会有了一种排错的方法——全部注释,部分排查。
这里呢,直接上修改之后的mini_web框架的源码:来看看,到底是怎么修改的!!!在这里插入图片描述
其实很简单,就是连接了数据库,进行查询,只不过,这里稍微麻烦点的就是整理数据,把数据放到前端的网页模板中显示。
这里呢,最终实现的效果是这样的:在这里插入图片描述

这期间,还遇到一个问题——通过这个问题也涨了不少知识,第一次在 火狐浏览器里测试,遇到这个问题:在这里插入图片描述
造成这个乱码的原因,就是:我的服务器,没告诉浏览器要按照什么编码方式解码,这里在头部信息里加了 ;charset=utf-8解决了问题,期间,还遇到了一系列稀奇古怪的错误。
不过,我想说一点,上百度,上知乎,搜到的解决方法真的不如自己亲身经历之后解决的痛快,并且,他们的解决方法有的只适用于他们的问题,对于我的问题不合适,所以此时,我就需要 自己去一块一块拆分,排除错误—— 这里有一个比较好的BUG解决方法——全部注释,把错误范围缩小,只实验那一小部分,错误很快就找到。

今天的收获不多不少,勉强满意。

发布了36 篇原创文章 · 获赞 75 · 访问量 5452

猜你喜欢

转载自blog.csdn.net/weixin_44449518/article/details/99106446