Django(一)

news/2024/10/22 17:36:13/

1.web框架底层

1.1 网络通信

在这里插入图片描述
注意:局域网
在这里插入图片描述
个人一般写程序,想要让别人访问:阿里云、腾讯云。

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

先以局域网为例
在这里插入图片描述

  • 我的电脑【服务端】
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()
  • 女朋友的电脑(同一个局域网)【客户端】
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()
  • 姓王的好兄弟【客户端】
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架构
浏览器:充当客户端
服务器:网站
  • cs架构,开发应用程序,例如:QQ、Pycharm、网易云音乐(安装在电脑上的软件)
客户端:安装在电脑上的软件。 网易云音乐
服务端:网易服务器

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

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、…
  • 框架

http://www.ppmy.cn/news/1275812.html

相关文章

webGL开发智慧城市流程

开发智慧城市的WebGL应用程序涉及多个方面,包括城市模型、实时数据集成、用户界面设计等。以下是一个一般性的流程,您可以根据项目的具体需求进行调整,希望对大家有所帮助。 1.需求分析: 确定智慧城市应用程序的具体需求和功能。考…

Qt-QTransform介绍与使用

QTransform是一个用于二维坐标系转换的类。我们知道Qt的坐标系是左上角为原点,x轴向右,y轴向下,屏幕上每个像素代表一个单位,那么,如果我们想要在屏幕上建立自己的坐标系用于绘制,就需要借助QTransform。 …

C++的设计模式总结

通过指针指向一个多态对象来表达灵活性

View UI(iView) Upload 自定义多图上传列表提交

iView Upload 自定义多图上传列表提交 可以自由控制上传列表,完成各种业务逻辑,示例是一个照片墙,可以查看大图和删除。 设置属性 show-upload-list 为 false,可以不显示默认的上传列表。设置属性 default-file-list 设置默认已…

景区气象站:旅游体验的新升级

随着科技的发展和人们生活水平的提高,越来越多的人选择在节假日或周末外出旅游,感受大自然的美好。然而,在享受大自然的同时,天气因素成为了影响旅游体验的关键因素之一。为了更好地服务游客,许多景区开始引入气象站&a…

sql解析,转换列表和表名

sql解析,转换列表和表名 1、 jsqlparse介绍 JSqlParse是一款很精简的sql解析工具,它可以将常用的sql文本解析成具有层级结构的“语法树”,我们可以针对解析后的“树节点(也即官网里说的有层次结构的java类)”进行处理…

Eclipse 一直提示 loading descriptor for 的解决方法

启动eclipse之后,进行相关操作时,弹出界面,提示:loading descriptor for xxx 解决方法: 在Eclipse左侧的Project Explorer 最右上角有一个小钮,鼠标移上去时提示"View Menu". 你点一下,在弹出的上下文菜单中…

State of PostgreSQL 2023 报告解读

基于 PostgreSQL 内核的时序数据库厂商 Timescale 发布了一年一度的 State of Postgres 2023 报告。 Timescale 介绍 简单先介绍一下 Timescale 这家公司的历史。它最早是提供了一个 PG 的插件,引入了 Hypertable 这个概念,来高效地处理时序数据&…