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>
    
  • 相关阅读:
    Delphi中使用IdHTTP访问基于SSL协议(https)的网站
    一篇就算若干年后一看到仍会打动我的心的文章
    最全面的DBGrid点击标题实现排序
    最全面的DBGrid点击标题实现排序
    Delphi 2009(Tiburon)终于快要发布了
    C++树的实现
    linux常用命令
    Centos ulimit设置
    how tomcat works(第六章)
    how tomcat works(第五章)
  • 原文地址:https://www.cnblogs.com/jiangjunwang/p/14361743.html
Copyright © 2011-2022 走看看