框架基础

框架实质:

所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端

B/S结构的响应:

import socket
def handle_request(client):
buf = client.recv(1024)
client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf8"))
client.send("<h1 style='color:red'>Hello, yuan</h1>".encode("utf8"))
def main():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('localhost',8001))
sock.listen(5)
while True:
connection, address = sock.accept()
handle_request(connection)
connection.close()
if __name__ == '__main__':
main()

WSGI: web server gateway interface

1.封装了socket对象以及准备过程[socket创建,bind, listen]

2.通过version,将所有的请求对象进行了封装,键值对通过字典的形式封装,通过key可以获取value

3.通过start_response()可以很方便的设置response响应头

常识:

请求分为请求头和请求体

如果是get请求: 数据包装在url里面,不需要请求体,只有请求头

如果是post请求: 数据包装在请求体里面

注意: 请求头和请求体通过2个换行符分隔

from wsgiref.simple_server import make_server

// application()函数必须由WSGI服务器来调用,因为我们本身无法传递实参给函数,实参是内部封装的。
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'<h1>Hello, web!</h1>'] httpd = make_server('', 8080, application)
print('Serving HTTP on port 8000...')
# 开始监听HTTP请求:
httpd.serve_forever()

MVC &&MTV

MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。

模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。

Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:

Model(模型):负责业务对象与数据库的对象(ORM)

Template(模版):负责如何把页面展示给用户(存储HTML文件)

View(视图):负责业务逻辑,并在适当的时候调用Model和Template(类似MVC中的Conrtoller)

此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

最新文章

  1. django的分页
  2. GAudio是一个音频播放SDK
  3. ASP.NET 文件下载
  4. ahjesus C# Flags 位域略说
  5. SQL之 CAST 和 CONVERT
  6. html5 拖拽
  7. 为什么 JavaScript 中基本数据类型拥有 toString 之类方法?
  8. Android 通过http访问服务器
  9. java类的访问控制符与其他几个特殊修饰符的总结
  10. ContentProvider初阶Cookbook
  11. ViewPager实现页卡的3种方法(谷歌组件)
  12. 201521123039 《java程序设计》第九周学习总结
  13. C++值传递与引用传递
  14. RabbitMQ资料
  15. Verdi 看波形常用快捷操作
  16. 利用git 进行多人协作开发
  17. Jfinal文件上传基础路径问题,windows下会以项目根路径为基础路径
  18. Redis模块学习笔记(一)RediSearch简单使用
  19. PHP $a=&#39;abcdef&#39;;请取出$a的值并打印第一个字母
  20. SQL Server 2008中的MERGE(不仅仅是合并)

热门文章

  1. Python2.7环境下安装pydbg
  2. 创建第一个WCF服务
  3. golang实现kafka的消息推送
  4. MyBatis Generator 详解(转)
  5. 安装caffe(opencv3+anaconda3)
  6. 搭建nginx代理,为前端页面跨域调用接口
  7. WCF-netTcpBinding端口共享
  8. RabbitMQ---3、c#实现
  9. g2o error2
  10. 【转】Eclipse,MyEclipse快捷键及字体设置