社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

看完你就会!Python自动化开发必备项目之博客网站全实现

马哥Linux运维 • 7 年前 • 1628 次点击  

本文由马哥教育Python自动化实战班6期学员推荐,转载自互联网,作者为 lm409,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。


断断续续终于过了一遍Python教程,于此梳理教程实战作业:搭建一个Blog网站。

由于欠缺前端知识,有些代码直接引用于项目源码,个人做了尽量详尽的注释以帮助理解,希望在今后能够学习HTML、CSS、JavaScript等知识,然后回头重新理解本项目。

作品的完整代码,回复公众号:博客神器

一、文件结构



二、关键技术

1.http工作流程


1. 客户端(浏览器)发起请求

2. 路由分发请求(这个框架自动帮处理),add_routes函数就是注册路由。

3. 中间件预处理

- 打印日志

- 验证用户登陆

- 收集Request(请求)的数据

4. RequestHandler清理参数并调用控制器(Django和Flask把这些处理请求的控制器称为view functions)

5. 控制器做相关的逻辑判断,有必要时通过ORM框架处理Model的事务。

6. 模型层的主要事务是数据库的查增改删。

7. 控制器再次接管控制权,返回相应的数据。

8. Response_factory根据控制器传过来的数据产生不同的响应。

9. 客户端(浏览器)接收到来自服务器的响应。

三.ORM框架Day3-Day4

ORM全称为对象关系映射(Object Relation Mapping),即用一个类来对应数据库中的一个表,一个对象来对应数据库中的一行,表现在代码中,即用类属性来对应一个表,用实例属性来对应数据库中的一行。

具体步骤如下:

orm.py中实现元类ModelMetaclass:创建一些特殊的类属性,用来完成类属性和表的映射关系,并定义一些默认的SQL语句,如SELECT, INSERT, UPDATE, DELETE等

orm.py实现Model类:包含基本的getattr,setattr方法用于获取和设置实例属性的值,并实现相应的SQL处理函数,如find、findAll、save、remove等

model.py中实现三个映射数据库表的类:User、Blog、Comment,在应用层用户只要使用这三个类即可

四.web框架Day5

aiohttp已经是一个Web框架了,在此主要对aiohttp库做更高层次的封装,从简单的WSGI接口到一个复杂的web framework,本质上还是对request请求对象和response响应对象的处理,可以将这个过程想象成工厂中的一条流水线生产产品,request对象就是流水线的原料,这个原料在经过一系列的加工后,生成一个response对象返回给浏览器。

具体步骤如下:

coroweb.py中@get()装饰器给http请求添加请求方法和请求路径这两个属性;RequestHandler()调用url参数,将结果转换位web.response

app.py中传入拦截器middlewares,通过add_routes()批量注册URL处理函数、init_jinja2()初始化jinja2模版、add_static()添加静态文件路径

create_server()创建服务器监听线程

监听线程收到一个request请求

经过几个拦截器(middlewares)的处理(app.py中的app = web.Application..这条语句指定)

调用RequestHandler实例中的call方法;再调用call方法中的post或者get方法

调用handlers.py中响应的URL处理函数,并返回结果

response_factory在拿到经URL处理函数返回过来的对象,经过一系列类型判断后,构造出正确web.Response对象,返回给客户端

五.作业成果

博客首页:


写博客:


文章管理:


文章详情:


六、总结

通过该作业,基本了解了一个webapp的开发流程和部分技术,了解了http的工作原理,复习了python的使用。但是也深刻认识到python知识点的不熟练和前端相关知识的匮乏,后续仍要加强python项目练习和前端知识的学习。



————开班喜讯————


温馨提醒:马哥教育Python自动化开发班将于8月28日在北京海淀上地开班,小班制魔鬼式授课,钜惠限时抢位中。

马哥教育2017年Python自动化运维开发实战班,马哥联合BAT、豆瓣等一线互联网Python开发达人,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一线互联网公司:大众点评、饿了么、腾讯等生产环境真是项目,课程由浅入深,从Python基础到Python高级,让你融汇贯通Python基础理论,手把手教学让你具备Python自动化开发需要的前端界面开发、Web框架、大监控系统、CMDB系统、认证堡垒机、自动化流程平台六大实战能力,让你从0开始蜕变成Hold住年薪20万的Python自动化开发人才


Python学习免费交流QQ群:542679406(千人群)



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/MTZDvR6GOJ
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/2686
 
1628 次点击  
文章 [ 1 ]  |  最新文章 4 年前