Django框架:
报文头:
报文请求:
通过 socket 建立 TCP 服务器,绑定 IP 与端口号,设置客户端监听:
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen()
while True:
conn, addr = server.accept()
data = conn.recv(1024)
print(data)
conn.send(b'HTTP/1.1 200 OK \r\n\r\nhello, world!\nnice to meet you!')
conn.close()
通过函数请求报文头:
import socket
server = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen()
def index(u):
return (str(u) + ' index').encode('utf-8')
def home(u):
return (str(u) + ' home').encode('utf-8')
lst = [
('/index/', index),
('/home/', home)
]
while True:
conn, addr = server.accept()
data = conn.recv(1024)
data = str(data, encoding='utf-8')
url = data.split(' ')[1]
conn.send(b'HTTP/1.1 200 OK \r\n\r\n')
fun = None
for i in lst:
if i[0] == url:
fun = i[1]
break
if fun:
response = fun(url)
else:
response = b'404 Not Found'
conn.send(response)
conn.close()
服务器程序和应用程序:
服务器程序:
负责对 socket 服务器进行封装,并在请求到来时,对请求的各种数据进行整理。
应用程序:
负责具体的逻辑处理,要去满足服务器程序、框架的需求。
框架与服务器:
WSGI(web服务器网关接口)就是一种规范。
服务器有:uwsgi, Gunicorn,
python 标准库提供的独立的 WSGI 服务器:wsgiref —> django 服务器
可以利用这个框架去写 socket 部分 —> 利用模块去实现 socket 服务器部分:
import socket
server = socket.socket()
server.bind(('127.0.0.1', 8080))
server.listen()
这一部分可以省略。
import time
from wsgiref.simple_server import make_server
"""封装 socket 服务器"""
def index(url):
s = f'这是{url} index页面'
return bytes(s, encoding='utf-8')
def home(url):
s = f'这是{url} home页面'
return bytes(s, encoding='utf-8')
lst = [
('/index/', index),
('/home/', home)
]
def run_server(environ, start_response):
"""有两个参数:"""
# environ: 请求相关的所有数据:是一个字典键值对的形式 --> 通过字典的键 'PATH_INFO' 获取 url
# start_response: 相应相关的所有数据
# return: 返回给浏览器的数据
start_response('200 OK', []) # 设置 http 响应状态码和头信息
print(environ)
url = environ['PATH_INFO']
print(url)
fun = None
for i in lst:
if i[0] == url:
fun = i[1]
break
if fun:
response = fun(url)
else:
response = b'404 Not Found'
return [response, ]
if __name__ == '__main__':
httd = make_server('127.0.0.1', 8080, run_server)
# 会实时监听 127.0.0.1:8080 地址,只要客户端来了就交给 run_server 函数
# run_server 函数处理具体任务
print('8080')
httd.serve_forever() # 启动服务端
Django 的影子:
views.py —> 视图函数(后端业务逻辑)
urls.py —> 路由和视图函数的对应关系
templates 文件夹 —> 专门用来储存 html 文件
动静态网页:
静态网页:
页面上的数据都是直接写死的,不会发生改变的。
动态网页:
数据是实时获取的,通过后端获取数据再展示的 html 页面上。
eg:
- 数据是从数据库中获取的展示到 html 页面上
- 后端获取当前时间展示到 html 页面上
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。