Django二转day01
web应用
cs/bs 架构
# c/s mysql c和s装在同一台机器上
-c链接s: cmd窗口中 mysql -h 127.0.0.1 -P 3306 -uroot -p密码
-网络协议:一般情况,都是软件自定制协议---》基本都是基于TCP
# b/s 浏览器--服务端
-咱们写的django,运行后----》s 服务端
-客户端链接----》浏览器
-网络协议:所有全是 http协议---》基于TCP
-如果不是http协议,浏览器识别不了
# bs本质就是cs
# bs好处---》软件更新了---》只需要后端更新--》前端是浏览器,不需要变---》直接访问,看到的就是最新的
基于SOCKET写一个web应用
-我们学习bs架构软件开发---》我们开发 s端
-使用socket 写一个 s端---》浏览器就可以访问了
import socket
def server_run():
soc = socket.socket()
soc.bind(('127.0.0.1', 8008))
soc.listen(5)
while True:
conn, addr = soc.accept()
recv_data = conn.recv(1024)
print(recv_data)
# 1 直接在send里写,发送给客户端 http响应的格式
# conn.send(b'HTTP/1.1 200 OK\r\n\r\n<h1>hello web</h1><img src="https://img2.woyaogexing.com/2022/12/24/a22973058eab2aafa11248a8b6031f5e.jpg"></img>')
#2 打开一个html文件,发送给客户端
# with open('index.html','r',encoding='utf-8') as f:
# data=f.read()
# conn.send(('HTTP/1.1 200 OK\r\n\r\n%s'%data).encode('utf-8'))
# 3 动态网页,字符串替换
import time
now=time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print(now)
with open('index.html','r',encoding='utf-8') as f:
data=f.read()
data=data.replace('@@',now)
conn.send(('HTTP/1.1 200 OK\r\n\r\n%s'%data).encode('utf-8'))
conn.close()
if __name__ == '__main__':
server_run()
http协议
1.是什么?
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)
2.作用是?
服务器与本地浏览器之间传输超文本的传送协议
3 特点是什么?
-1基于TCP协议之上的【应用层】协议----》它是可靠传输
-2 基于请求-响应模式: 必须客户端主动发起--》服务端才有响应
-如果实时跟服务端通信---》每隔2s发送一次请求--》轮询---》实现实时聊天
-web版微信
-实时通信---》使用轮询, webscoket 协议
-3 无状态保存
-发送多次请求,对于服务端来讲,都是新的
-cookie,session做会话保持
-4 无连接 客户端不会一直跟服务端链接
基于tcp---》有链接
# 4 http请求协议与响应协议
-请求协议
-请求首行---》请求方式--》请求地址--》请求协议版本号 1.1 \r\n
-请求头:key-value形式 \r\n \r\n\r\n
-请求体:get请求一般没有请求体,post请求有请求体
-响应协议
-响应首行:HTTP/1.1 200 OK\r\n --协议版本---响应状态码--》响应描述符
-响应头:响应头有什么
-响应体:一般给个html标签
浏览器中看到的页面,都是响应体的内容
让其他人可以通过端口访问你的mysql数据库
修改mysql默认访问权限
#登录
mysql -uroot -p
#显示数据
show databases;
#进入mysql
use mysql;
#显示面板
show tables;
#显示host访问方式
select user,host from user;
#修改root用户的访问方式
update user set host = '%' where user = 'root';
#刷新
flush privileges;
让其他人可以通过端口访问你的Django项目
在settings文件配置
ALLOWED_HOSTS = ['*', ]
然后在terminal面板运行
python manage.py runserver 0.0.0.0:8000
http版本及其区别
HTTP的版本之间的区别,主要是1.0/1.1/2.0三个版本的区别有哪些? - 知乎
常用的请求头,响应头,响应状态码
HTTP响应头和请求头信息对照表-BeJSON.com
https://www.cnblogs.com/yf0826/p/9016602.html
HTTP状态码(响应码)_响应状态码-CSDN博客