Django框架导读

一.虚拟环境

  • 什么是虚拟环境
# 对真实的python解释器的一个拷贝版本
# 是事实有效的,可以独立存在运行解释python代码
# 可以在计算机上拷贝多个虚拟环境
  • 为什么要使用虚拟环境
# 保证真实环境的纯净性
# 框架的多版本共存
# 方便做框架的版本迭代
# 降低多框架共存的维护成本
  • 安装虚拟环境
# 1.通过pip3安装虚拟环境:
#	-- pip3 install virtualenv

# 2.前往目标文件夹:
#	-- cd 目标文件夹  (D:\Virtualenv)

# 3.创建纯净虚拟环境:
#	-- virtualenv 虚拟环境名 (py3-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协议

  • 什么是http协议
# HTTP(HyperText Transport Protocol)是超文本传输协议
# 基于TCP/IP协议基础上的应用层协议,底层实现仍为socket
# 基于请求-响应模式:通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应
# 无状态:协议不对任何一次通信状态和任何数据做保存
# 无连接:一次连接只完成一次请求-响应,请求-响应完毕后会立即断开连接
  • http工作原理(事务)
# 一次http操作称之为一个事务,工作过程可分为四步
# 1.客户端与服务端建立连接
# 2.客户端发生一个http协议指定格式的请求
# 3.服务器端接收请求后,回应一个http协议指定格式的响应
# 4.客户端将服务器的响应显示展现给用户
  • 状态码
# 1打头:消息通知
# 2打头:请求成功
# 3打头:重定向
# 4打头:客户端错误
# 5打头:服务器端错误

四.原生socket

  • 关注服务器端
# 完成B/S架构项目的设计

# Borwser已经完成
# 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()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值