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>
    
  • 相关阅读:
    ASP.NET实现年月日三级联动(局部刷新)
    通过ip地址获取当前地理位置
    Microsoft.Practices.Unity 给不同的对象注入不同的Logger
    sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。
    bindingredirect 没有效果
    Expression构建DataTable to Entity 映射委托
    windows 2003 远程桌面 连接输入账号密码后,只能看见蓝色屏幕和鼠标
    vmware workstation 10.0.1 install mac os mavericks
    教师节我的专属祝福方式!
    信盈达学员学习心得
  • 原文地址:https://www.cnblogs.com/jiangjunwang/p/14361743.html
Copyright © 2011-2022 走看看