Django从入门到放弃

目录

  • 基于socket手写web框架
  • 基于wsgiref定义自己的web框架
  • 数据库取数据,渲染页面
  • 三大主流框架分析
  • http协议分析
  • Django下载,创建项目

基于socket手写web框架

py文件

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里写,发送给客户端
        # conn.send(b'HTTP/1.1 200 OK\r\n\r\n<h1>hello web</h1><img src="https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=5e3814acf9edab64607f4592965fc4a6/14ce36d3d539b600c0c465d0eb50352ac65cb74b.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()

index文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>@@@</h2>

<img src="https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=5e3814acf9edab64607f4592965fc4a6/14ce36d3d539b600c0c465d0eb50352ac65cb74b.jpg" alt="">
</body>
</html>

 基于wsgiref定义自己的web框架

wsgirefServer.py

from wsgiref.simple_server import make_server
from url import urls
from views import error


def run(env,response):
    print(env)

    response("200 OK",[('Content-type','text/html')])
    position=env['PATH_INFO']
    func=None
    for url in urls:
        if position==url[0]:
            func=url[1]
            break
    if func:
        response=func(env)
    else:
        response=error(env)

    return [response.encode('utf-8')]
# 错误开头
# 1 服务器正在给我处理
# 2 成功
# 3 重定向
# 4 客户端错误
# 5 服务器错误

if __name__ == '__main__':
    ser=make_server('127.0.0.1',8003,run)
    ser.serve_forever()

url.py

from views import *

urls=[
    ('/index',index),
    ('/time',time),
    ('/test',test)
]

views.py

def index(env):
    return 'index'

def time(env):
    return 'time'

def error(env):
    return '404'

def test(env):
    return 'test'

猜你喜欢

转载自www.cnblogs.com/sanqiansi/p/9909070.html