wsgiref模块与jinja2模块编写web框架

wsgiref模块

from wsgiref.simple_server import make_server
# wsgiref本身就是个web框架,提供了一些固定的功能(请求和响应信息的封装,不需要我们自己写原生的socket了也不需要咱们自己来完成请求信息的提取了,提取起来很方便)
#函数名字随便起
def application(environ, start_response):
    '''
    :param environ: 是全部加工好的请求信息,加工成了一个字典,通过字典取值的方式就能拿到很多你想要拿到的信息
    :param start_response: 帮你封装响应信息的(响应行和响应头),注意下面的参数
    :return:
    '''
    start_response('200 OK', [('Content-Type', 'text/html'),('k1','v1')])
    print(environ)
    print(environ['PATH_INFO']) #获取的是请求路径
    #输入地址127.0.0.1:8000,这个打印的是'/',输入的是127.0.0.1:8000/index,打印结果是'/index'
    return [b'

Hello, web!

'] #和socketserver那个模块很像 httpd = make_server('127.0.0.1', 8080, application) print('Serving HTTP on port 8080...') # 开始监听HTTP请求: httpd.serve_forever()

jinja2字符串替换




    
    Title


个人介绍

    //jinja2的替换格式,对列表可以进行循环取值 {% for i in hobby %}
  • {{ i }}
  • {% endfor %}
#************************* #python代码 from jinja2 import Template def home(conn): # {% for i in hobby %} #
  • {{ i }}
  • # {% endfor %} with open('08jinja2test.html', 'r',encoding='utf-8') as f: data = f.read() t = Template(data) ret = t.render({'hobby':['金钱','女人','金鑫']})//对HTMl进行替换 conn.send(ret.encode('utf-8')) conn.close()

    jinja2和wsgire框架编写

    import socket, time
    from wsgiref.simple_server import make_server
    from jinja2 import Template
    
    # 客户端通过根路径访问时,服务端返回HTML页面
    def home(conn):
        with open('test.html', 'r', encoding='utf-8')as f:
            new = str(time.time())
            s = f.read()
            # 将获取的动态时间替换掉HTML页面中的时间,达到动态返回页面的效果
            t = Template(s)
            ret = t.render({'hobby':['张达','猪繁育','力争']})
            return ret.encode('utf-8')
    # 当客户端通过CSS路径访问的时候,服务端返回CSS文件
    def style(conn):
        with open('style.css', 'rb')as f:
            return f.read()
    # 当客户端通过JS路径访问的时候,服务端返回CSS文件
    def index(conn):
        with open('test.js', 'rb')as f:
            return f.read()
    # 当客户端通过请求索要图片的时候,服务端返回图片
    def png(conn):
        with open('1.jpg', 'rb')as f:
            return f.read()
    # 当客户端发送请求索要,ico文件的时候,返回ioc文件
    def ico(conn):
        with open('wechat.ico', 'rb')as f:
            return f.read()
    def ind(conn):
        with open('index.html', 'rb')as f:
            return f.read()
    # 定义一个路径和文件的对应列表,节省代码,
    urlList = [('/', home), ('/style.css', style), ('/test.js', index), ('/wechat.ico', ico), ('/index', ind),
               ('/1.jpg', png)]
    
    def app(envion,start_sponse):
        #返回HTTP请求行
        start_sponse('200 ok',[])
        #获取请求路径
        path=envion['PATH_INFO']
        ret=None
        for i in urlList:
            if path==i[0]:
                ret=i[1](1)
                break
        if ret:
            return [ret]
        else:
            return [b'404']
    httpd=make_server('127.0.0.1',8896,app)
    httpd.serve_forever()
    
    '''**************************************************'''
    #前端代码
    
    
    
        
        test
        
        
        
        
    
    
        #循环读取hobby的数据
        {% for i in hobby %}
        

    欢迎猪繁育在{{i}}来到繁育基地

    {% endfor %} #申明结束 你大太阳

    你可能感兴趣的:(wsgiref模块与jinja2模块编写web框架)