Django框架导读
一.虚拟环境
1.什么是虚拟环境
对真实的python解释器的一个拷贝版本
是事实有效的,可以独立存在运行解释python代码
可以在计算机上拷贝多个虚拟环境
2.为什么要使用虚拟环境
保证真实环境的纯净性
框架的多版本共存
方便做框架的版本迭代
降低多框架共存的维护成本
3.安装虚拟环境
(1).通过pip3安装虚拟环境:
-- pip3 install virtualenv
(2).前往目标文件夹:
-- cd 目标文件夹 (D:\ Virtualenv)
(3).创建纯净虚拟环境:
-- virtualenv 虚拟环境名 (pu3-env1)
(4). 终端启动虚拟环境:
-- cd py3-env1\Scripts
-- activate
(5). 进入虚拟环境下的python开发环境
-- python3
(6).关闭虚拟环境:
-- deactivate
(7).PyCharm的开发配置
添加: 创建项目 -> Project Interpreter -> Existing interpreter -> Virtualenv Environment | System Interpreter -> 目标路径下的python.exe
删除: Setting -> Project -> Project Interpreter -> Show All
二.web架构
web应用 架构
C/S架构 | B/S 架构
client server: 客户端服务器架构, C++
browser server: 浏览器服务器架构, java.Python
三.http协议
(1).什么是http协议
HTTP(HyperText Transport Protocol) 是超文本传输协议 基于TCP/IP协议基础上的应用层协议,底层实现仍为socket 基于请求-响应模式: 通信一定是从客户端开始, 服务器接收到客户端一定会做出对应响应 无状态: 协议不对任何一次通信状态和任何数据做保存 无连接: 一次连接只完成一次请求-响应, 请求-响应完毕后会立即断开连接
(2). http工作原理(事务)
一次http操作称之为一个事务,工作过程可分为四步 1.客户端与服务端建立连接 2.客户端发生一个http协议指定格式的请求 3.服务器端接收请求后,回应一个http协议指定格式的响应 4.客户端将服务器的响应显示展现给用户
(3).状态码
1打头: 消息通知
2打头: 请求成功
3打头: 重定向
4打头: 客户端错误
5打头: 服务器错误
四.原生socket
关注服务器端
#完成B/S架构项目的设计 #Borswer已经完成 #Server需要手动书写socket,以http协议方式完成响应 import socket # 设置响应头(包含响应行) RESP_HEADER = b'HTTP/1.1 200 OK\r\nContent-type:text/html;charset = utf-8\r\n\r\n' # 设置服务器socket相关信息 server = socket.socket() server.bind(('localhost',8808)) server.listen(5) print('服务:http://localhost:8808') while True: # 获取B以http协议发来的请求 client, address = server.accept() data = client.recv(1024) # 数据报文 包含 请求行 请求头 请求体 print(data) # 手动以http协议完成响应 # 数据报文 包含 响应行 响应头 响应体 client.send(RESP_HEADER) # /index => 响应主页 # /login => 登录页面 # 错误 => 404 # 数据data, 字节形式 => 字符串形式 strData = str(data,encoding = "utf-8") # 解析请求的数据,分析得到路由 my_route = strData.split('\r\n')[0].split(' ')[1] # 后台没有设置的路由,统统以404来处理 dt = b'404' # 设置的路由返回响应的页面文件 if my_route == '/index': with open('02_index.html','rb') as f: dt = f.read() if my_route == '/login': with open('02_login.html','rb') as f: dt = f.read() # /favicon.ico该请求是往后台请求标签图标 if my_route == '/favicon.ico': with open('favicon.ico','rb') as f: dt = f.read() # 响应体 client.send(dt) # 一次循环,代表一次响应,也就是一次事务的完成,要关闭http请求连接 client.close()