初始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\r\n\r\n')
    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\r\n\r\n')
    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\r\n\r\n')
    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\r\n\r\n')
    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>
posted @   EJW  阅读(53)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示