参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432339008728d0ddbe19ee594980be3f0644a9371894000

解释:https://blog.csdn.net/qq_38801354/article/details/73008111

重写web框架的好处

  1)可以直接这样写

#处理带参数的URL/blog/{id}可以这么写:
@get('/blog/{id}')
def get_blog(id):pass
#处理query_string参数可以通过关键字参数**kw或者命名关键字参数接收:(这个还不太懂)
@get('/api/comments')
def api_comments(*, page='1'):pass
#对于函数的返回值,不一定是web.Response对象,可以是str、bytes或dict。
#所以如果希望渲染模板,我们可以这么返回一个dict:
return {'__template__': 'index.html','data': '...'
}

  而不是需要使用aiohttp时必须的一些步骤

#直接使用aiohttp
import asynciofrom aiohttp import webasync def index(request):await asyncio.sleep(0.5)return web.Response(body=b'<h1>Index</h1>')
#--------------------------------------------------看这个
async def hello(request):#使用async关键字添加协程装饰器await asyncio.sleep(0.5)#对request参数进行操作,获取响应的操作text = '<h1>hello, %s!</h1>' % request.match_info['name']#构造reponse对象并返回return web.Response(body=text.encode('utf-8'))async def init(loop):app = web.Application(loop=loop)app.router.add_route('GET', '/', index)app.router.add_route('GET', '/hello/{name}', hello)srv = await loop.create_server(app.make_handler(), '127.0.0.1', 8000)print('Server started at http://127.0.0.1:8000...')return srvloop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()

  所以,自定义的web框架能封装上面的一些步骤,让你只需要编写函数就好了

  2)可以对模块进行单独测试,不然,需要你模拟一个浏览器请求即request才可以实现

开始编写Web框架

第一步:以aiohttp框架为基础去编写

  @get和@post

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。
建议:
1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;
2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

  把一个函数映射(相当于绑定)为一个URL处理函数

第二步:定义RequestHandler

  使用者编写的URL处理函数不一定是一个coroutine,因此我们用RequestHandler()来封装一个URL处理函数(不懂)

   RequestHandler 目的就是从URL函数中分析其需要接收的参数,从request中获取必要的参数,调用URL函数。

  RequestHandler 是一个类,创建的时候定义了 __call__() 方法,因此可以将其实例视为函数。

  关于Call方法的作用:https://www.cnblogs.com/superxuezhazha/p/5793536.html

#一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。#我们把 Person 类变成一个可调用对象:class Person(object):def __init__(self, name, gender):self.name = nameself.gender = genderdef __call__(self, friend):print 'My name is %s...' % self.nameprint 'My friend is %s...' % friend
#现在可以对 Person 实例直接调用:>>> p = Person('Bob', 'male')#__init__中传入的参数是干这样的事情的,类似于初始化
>>> p('Tim')#然后用实例来调用
My name is Bob...
My friend is Tim...
#单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。

  

  

转载于:https://www.cnblogs.com/Gaoqiking/p/10751335.html

python web开发 编写web框架相关推荐

  1. 篇一、Flask打造 Python Web 开发的灵活框架,实现简易登录。要求有 Python、HTML 和 CSS 基础。

    ⭐ 简介:大家好,我是zy阿二,我是一名对知识充满渴望的自由职业者. ☘️ 最近我沉溺于Python的学习中.你所看到的是我的学习笔记. ❤️ 如果对你有帮助,请关注.点赞,让我们共同进步.有不足之处 ...

  2. Python Web 开发 – 在线web计算器

    Python Web 开发 – 在线web计算器 本文环境: Python-3.10.2 Visual Studio Code-1.65.2 Django-4.0.3 Bootstrap-5.1.3 ...

  3. 分享20个非常有用的Web开发工具和框架

    在开发中借助一些非常好用的工具可以帮助你节省大量的时间和精力.本文收集了20个非常有用的Web开发工具和框架,分享给大家,希望对你有帮助. 1. Blueprint Blueprint 是一款CSS框 ...

  4. WEB开发之前端框架搭建-庞永旺-专题视频课程

    WEB开发之前端框架搭建-34人已学习 课程介绍         本课程主要教大家如何整理出常用的代码,编写前端常用的功能,课程的最大亮点就是数据模板的使用,此数据模板均为本人原创,此数据模板也经过几 ...

  5. python网站开发实例 flask_python-flask框架web服务接口开发实例

    一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务.本文就用flask来开发一个接口. 二:安装框架 flask需要先安装再引用.pip install ...

  6. python程序框架的描述_简单介绍Python下自己编写web框架的一些要点

    在正式开始Web开发前,我们需要编写一个Web框架. 为什么不选择一个现成的Web框架而是自己从头开发呢?我们来考察一下现有的流行的Web框架: Django:一站式开发框架,但不利于定制化: web ...

  7. Web开发的机器学习框架

    目前,机器学习是软件开发中最热门的趋势之一.许多分析师甚至认为机器学习将彻底改变某些程序的开发过程,包括Web和移动应用程序. 以下几点清楚地表明了机器学习对Web开发的强大影响: 传统数据挖掘的良好 ...

  8. Web开发之常用框架BootStrap

    bootstrap是基于HTML.CSS.JS的前端框架,该框架预定了一套CSS样式和与样式相对应的JS代码,开发人员只需要编写HTML结构,添加bootstrap固定的class样式,就可以实现指定 ...

  9. 用gin进行web开发的基本框架搭建

    作者很菜,欢迎交流,不对的请指正! 使用gin构建了一个平常开发易用脚手架,代码简洁易读,可快速进行高效web开发. 主要功能有: mysql/redis的配置 使用viper读取配置文件(yaml) ...

  10. 走进移动web开发的四大框架

    伴随着智能手机的发展,电子商务的下一个金矿将是移动互联网,移动web开发也必将成为一个趋势. 目前,各种移动web开发的框架也纷纷到来,相信您也会很快投入其中!下面简单介绍一下各种框架. iUI: 它 ...

最新文章

  1. 利用C语言 Python校正图像,情人节来了,教你个用 Python 表白的技巧
  2. golang工程打包不发布
  3. 信息学奥赛一本通 1191:流感传染 | OpenJudge NOI 2.3 6262:流感传染
  4. 查看linux网络带宽
  5. Unity3d Awake、OnEnable、Start生命周期
  6. python函数转换_将Python函数转换为PL/Python函数
  7. ASIHTTPRequest報錯解決辦法
  8. Centos下更新php
  9. linux 运行 ccs,ccs_linux
  10. 烧结钕铁硼的居里温度与工作温度
  11. linux互信文件,linux SSH互信
  12. 语言在工作中扮演的角色
  13. MATLAB指纹识别技术[完美运行,详细解释,GUI界面,万字文稿]
  14. 湘潭大学数据库考试(郭云飞)
  15. 微信公众平台消息接口开发(20)图片识别之人脸识别
  16. 深入学术研究,物理学家用VR演示弦理论猜想
  17. 亚马逊精品处理邮件回复
  18. 假如给我三天光明(所有人都曾是小孩虽然只有少数人记得)
  19. 编写优雅的JavaScript——前言
  20. 计算机考试的话语,考试祝福语简短 祝考试顺利的一句话

热门文章

  1. 设计模式(十)—— 装饰者模式
  2. Android - 硬件抽象层(HAL)
  3. Application Wizard生成的项目文件简介
  4. 124 并发编程小结
  5. [COCI2009]Dvapravca
  6. 为什么时间是60进制的啊? ? ?
  7. [CEOI2008]order
  8. gcc 混合连接动态库和静态库
  9. 微擎系统 微信支付 get_brand_wcpay_request:fail
  10. 原型与继承学习笔记3