初始web框架

一、简单回复html的web框架

import socket
server = socket.socket()
server.bind(('127.0.0.1',8001))
server.listen()
while 1:
    conn,addr = server.accept()
    from_brower_from = conn.recv(1024)
    print(from_brower_from)
    conn.send(b'HTTP/1.1 200 ok

')
    with open('test.html','rb')as f:
        data= f.read()
    # conn.send(b'niubi')
    conn.send(data)
    conn.close()

二、根据不同的请求回复不同的页面

import socket
server = socket.socket()
server.bind(('127.0.0.1',8001))
server.listen()
while 1:
    conn,addr = server.accept()
    from_brower_from = conn.recv(1024)
    # print(from_brower_from)
    path = from_brower_from.decode('utf-8').split(" ")[1]
    print(path)
    conn.send(b'HTTP/1.1 200 ok

')
    if path == '/':
        with open('test.html','rb')as f:
            data= f.read()
    elif path == '/2.jpg':
        with open('2.jpg','rb')as f:
            data= f.read()
    elif path == '/1.css':
        with open('1.css','rb')as f:
            data= f.read()

    # conn.send(b'niubi')
    conn.send(data)
    conn.close()

三、多线程+函数封装版

import socket
from threading import Thread
server = socket.socket()
server.bind(('127.0.0.1',8001))
server.listen()



def root(conn):
    with open('test.html', 'rb')as f:
        data = f.read()
    conn.send(data)
    conn.close()
def image(conn):
    with open('2.jpg', 'rb')as f:
        data = f.read()
    conn.send(data)
    conn.close()
def css(conn):
    with open('1.css', 'rb')as f:
        data = f.read()
    conn.send(data)
    conn.close()
def notfount(conn):
    conn.send(b'not found 404')
    conn.close()
url = [
    ('/',root),
    ('/2.jpg',image),
    ('/1.css',css)
]
while 1:
    conn,addr = server.accept()
    from_brower_from = conn.recv(1024)
    # print(from_brower_from)
    path = from_brower_from.decode('utf-8').split(" ")[1]
    print(path)
    conn.send(b'HTTP/1.1 200 ok

')
    for i in url:
        if path == i[0]:
            # ret = i[1]()
            t = Thread(target=i[1],args=(conn,))
            t.start()
            break
    else:
        t = Thread(target=notfount,args=(conn,))
        t.start()

四、wsgire模块

https://cloud.tencent.com/developer/section/1368716

五、jinja2模块(页面渲染)

#主程序
import socket
import urls
from threading import Thread
server = socket.socket()
server.bind(('127.0.0.1',8001))
server.listen()
while 1:
    conn,addr = server.accept()
    from_brower_from = conn.recv(1024)
    # print(from_brower_from)
    path = from_brower_from.decode('utf-8').split(" ")[1]
    print(path)
    conn.send(b'HTTP/1.1 200 ok

')
    for i in urls.url:
        if path == i[0]:
            # ret = i[1]()
            t = Thread(target=i[1],args=(conn,))
            t.start()
#视图文件
from jinja2 import Template
def root(conn):
    with open('test.html', 'r' , encoding='utf-8') as f:
        data = f.read()
    ret = Template(data)
    ret=ret.render({'hobby':['金钱','女人','权力']})

    conn.send(ret.encode('utf-8'))
    conn.close()
def image(conn):
    with open('2.jpg', 'rb')as f:
        data = f.read()
    conn.send(data)
    conn.close()
def css(conn):
    with open('1.css', 'rb')as f:
        data = f.read()
    conn.send(data)
    conn.close()
def notfount(conn):
    conn.send(b'not found 404')
    conn.close()
#urls文件
import views
url = [
    ('/',views.root),
    ('/2.jpg',views.image),
    ('/1.css',views.css)
]
#前端页面
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
    <title>Bootstrap 101 Template</title>

    <!-- Bootstrap -->
    <link href="1.css" rel="stylesheet">


</head>
<body>
<h1 class="c1">你好,世界!</h1>
<img src="2.jpg" alt="">
{%for i in hobby%}
<li>{{i}}</li>
{% endfor %}
</body>
</html>
原文地址:https://www.cnblogs.com/jiangjunwang/p/14361743.html