Django(一)

1.web框架底层

1.1 网络通信


注意:局域网

个人一般写程序,想要让别人访问:阿里云、腾讯云。

  • 去云平台租服务器(含公网IP)
  • 程序放在云服务器

先以局域网为例

  • 我的电脑【服务端】
python 复制代码
import socket

# 1.监听本机的IP和端口
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('127.0.0.1', 8001))  # 我自己的电脑IP,端口8001

# 2.让多少人等待
sock.listen(5)

while True:
    # 3.等待连接请求的申请,有人来连接(阻塞)
    conn, addr = sock.accept()

    # 4.连接成功后立即发送
    conn.sendall("欢迎使用xx系统".encode("utf-8"))

    # 5.断开连接
    conn.close()


# 6.停止服务端程序
sock.close()
  • 女朋友的电脑(同一个局域网)【客户端】
python 复制代码
import socket

# 1. 向指定IP发送连接请求
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('192.168.10.3', 8001))

# 2. 接收你发的消息
message = client.recv(1024)
print(message.decode("utf-8"))

# 3.断开连接
client.close()
  • 姓王的好兄弟【客户端】
python 复制代码
import socket

# 1. 向指定IP发送连接请求
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('192.168.10.3', 8001))

# 2. 接收你发的消息
message = client.recv(1024)
print(message.decode("utf-8"))

# 3.断开连接
client.close()

我们自己写时,通过socket模块可以实现网络上的两端进行通信。

1.2 常见软件架构

  • bs架构
python 复制代码
浏览器:充当客户端
服务器:网站
  • cs架构,开发应用程序,例如:QQ、Pycharm、网易云音乐(安装在电脑上的软件)
python 复制代码
客户端:安装在电脑上的软件。 网易云音乐
服务端:网易服务器

1.3 快速自己写以为网站(不能用django、flask等)

python 复制代码
import socket

# 1.监听本机的IP和端口
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('192.168.0.6', 9000))  # 我自己的电脑IP,端口8001

# 2.让多少人等待
sock.listen(5)

while True:
    # 3.等待连接请求的申请,有人来连接(阻塞) -> 登录浏览器来连接我
    conn, addr = sock.accept()

    # 4.收到浏览器发送的消息
    buf = conn.recv(2048)
    print(buf)

    # 5.给浏览器返回数据
    conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
    conn.send(b"Hello, World")

    # 6.断开连接
    conn.close()

# 6.停止服务端程序
sock.close()

2. web框架

常见的web框架:django、flask、tornado、sanic、fastapi...

web应用程序:

  • 用户网络通信的socket
  • web框架
  • 业务开发

以django为例:

  • wsgiref模块、uwsgi、daphne -> 本质上都是socket实现。
  • 原来实现了框架

以flask为例:

  • werkzurg、uwsgi、...
  • flask框架

以tornado为例:

  • tornado、werkzurg、uwsgi、...
  • 框架

2.1 wsgiref

python 复制代码
from wsgiref.simple_server import make_server


def run_server(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ]


if __name__ == '__main__':
    httpd = make_server('127.0.0.1', 8000, run_server)
    httpd.serve_forever()

2.2 werkzeug

python 复制代码
pip install werkzeug
python 复制代码
from werkzeug.wrappers import Response


def application(environ, start_response):
    response = Response('Hello World!', mimetype='text/plain')
    return response(environ, start_response)


if __name__ == '__main__':
    from werkzeug.serving import run_simple

    run_simple('localhost', 4000, application)

2.3 各框架的区别

python 复制代码
django、flask、tornado、sanic、fastapi..
  • 内部集成功能的多少
    • django,内部提供了很多组件。 【相对大】
    • flask、tornado、sanic、fastapi... 本身自己功能很少+第三方组件。【相对小】
  • 同步框架 vs 异步非阻塞
    • 异步非阻塞:tornado、sanic、fastapi、django
    • 同步:django、flask、bottle、webpy...
python 复制代码
1.同步框架:django、flask
2.tornado,异步非阻塞,特别NB。
	- 同步:常见应用。
	- 异步:IO应用 + conroutine装饰器 + redis/MySQL/...
3.sanic,路飞小猿圈平台
4.fastapi
	- 参考flask
	- py最新注解
	- restfulAPI
	- 异步
	
目前不看好:
	- 增加编程的难度,功能&效率
	- 项目中不会有那么IO操作 ---> 100功能/2-IO ---> celery


相关推荐
2601_9563198816 分钟前
2026年零基础学量化:从看懂示例到写清条件和动作
人工智能·python
过期的秋刀鱼!38 分钟前
LangChain-D1-模型的工作流程
人工智能·python·langchain
萤火工厂目视化设计1 小时前
智能制造与企业文化目视化浪潮下:中小工厂的机遇与挑战
python·制造
DeepVisionary2 小时前
从GPT-5.6 Sol的Ultrafast模式看推理速度竞赛:750 token/秒背后,Cerebras的晶圆级生意
python·自动化
IT_陈寒2 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
leisoo80973 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
小柯南敲键盘3 小时前
跨马翻译:跨境电商批量图片翻译与视频字幕一站式工具
人工智能·python·音视频
IT爱学堂3 小时前
精讲软件设计师(软考中级)一站式通关课_实战课程_慕课网
后端
战天战地站房顶3 小时前
在 Windows Docker 中部署 PostgreSQL 17 + pgvector 完整指南
后端
卷无止境4 小时前
FastAPI Guard 全解析,从概念到工程落地的实战指南
后端·python