zoukankan      html  css  js  c++  java
  • 初始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>
    
  • 相关阅读:
    [LeetCode 1029] Two City Scheduling
    POJ 2342 Anniversary party (树形DP入门)
    Nowcoder 106 C.Professional Manager(统计并查集的个数)
    2018 GDCPC 省赛总结
    CF 977 F. Consecutive Subsequence
    Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
    Poj 2337 Catenyms(有向图DFS求欧拉通路)
    POJ 1236 Network of Schools (强连通分量缩点求度数)
    POJ 1144 Network (求割点)
    POJ 3310 Caterpillar(图的度的判定)
  • 原文地址:https://www.cnblogs.com/jiangjunwang/p/14361743.html
Copyright © 2011-2022 走看看