a,b,c=[1,2,[2,3]]
http 协议基于tcpip协议进行,socket与业务逻辑之间用的是wsgi协议
HTTP(HyperText Transport Protocol)是超文本传输协议 #基于TCP/IP协议基础上的应用层协议,底层实现仍为socket # 基于请求-响应模式:
通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应 #
无状态:协议不对任何一次通信状态和任何数据做保存 #
无连接:一次连接只完成一次请求-响应,请求-响应完毕后会立即断开连接
、web应用 运行在浏览器上的应用 2、c/s b/s 架构 client/server:客户端服务器架构,C++ brower/server:浏览器服务器架构,Java、Python 底层均是基于socket
Python Web框架
完整的http流程(事务)
客户端与服务端建立链接
客户端发送http协议的请求
服务端做出http的响应
服务端展示相应的响应
# 要遵循http协议返回数据:响应行(必须) 响应头 响应体
# browser.send(b'hello world') # 浏览器报错:127.0.0.1 发送的响应无效。
browser.send(b'HTTP/1.1 200 OK ') # 响应行(必须),以 结束
browser.send(b'Content-type:text/html ') # 响应头(可选),服务于响应体
browser.send(b' ') # 响应规则与响应体内容之间还需要一个 标识分割
browser.send(b'normal msg') # 响应体(可选)
browser.send(b'<h1>hello world</h1>') # 响应体(可选)
browser.close()
Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2
Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
网页提交
post或GET
GET提交安全性差
from wsgiref import simple_server
server=simple_server.make_server('127.0.0.1',1986,app)
server.serve_forever()
def app(environ,response):
envir是一个字典
environ['PATH_INFO']路径
environ['REQUEST_METHOD']提交方式
数据的获取
# GET 在environ的QUERY_STRING字段中,eg:usr=abc&pwd=123
# POST 数据长度CONTENT_LENGTH 数据存放的io流 wsgi.input eg: usr=abc&pwd=123
# length = int(environ['CONTENT_LENGTH'])
# res = environ['wsgi.input'].read(length)
# print(res)
response("200 OK", [('Content-type', 'text/html')])
随后是socket与业务逻辑之后返回渲染
from jinja2 import Template
with open(path,'rb')as f:
data=f.read()
tag=Template(data)
if :
tem=
data=tag.rond(result=tem)
html页面
{{result}}