zoukankan      html  css  js  c++  java
  • web框架

    http协议介绍:

      http协议对收发消息的格式要求

      每个http请求和响应都遵循相同的格式,一个http包含header和body两部分,body是可选的,http响应的header其中有一个content-type表明响应的内容格式。例如text/html表示html网页

      http get请求格式:

        

      http相应的格式:

        

    服务器程序和应用程序:

      对于真实开发python web程序来说,一般分为两部分:服务器程序和应用程序。

      服务器程序负责对socket服务器进行封装,并在请求到来时,对请求的各种数据进行整理。

      应用程序负责具体逻辑处理,为了方便应用程序的开发,就出现了众多的web框架,例如:django、flask、web.py。不同的框架有不同的开发方式,但是无论如何,开发出的应用程序都要和服务器程序配合,才能为用户提供服务。

      服务器程序就需要为不同的框架提供不同的支持,在真阳混乱的局面无论对于服务器还是框架,都是不好的。对于服务器来说,需要支持各种不同的框架,对弈框架来说,只要支持它的服务器才能够被开发出应用使用。

      这个时候标准化就变的尤为重要。可以设立一个标砖,只要服务器支持这个标准,框架也支持这个标准,就可以配合使用,一旦标准确定,双方各自实现,这样服务器就可以支持更多的标准的框架,框架也可以使用更多的支持标准的服务器。

      WSGI(web server gateway interface)就是一种规范,定义了使用python编写web应用程序与web服务器程序之间的接口格式,实现web应用程序与web服务器程序键的耦合。

      常用的WSGI服务器uwsgi、Gunicorn、而python标准库提供的独立WSGI服务器叫wsgiref,django开发环境就是这个模块来做服务器

      wsgiref

        利用wsgiref模块来提我们自己写的web框架的socket框架的socket server部分:

    import time
    from wsgiref.simple_server import make_server
    
    def index(url):
        # 打开index.html文件
        with open('index.html','r',encoding='utf-8') as f:
            s=f.read()
            now = str(time.time())
            s=s.replace('@@oo@@',now)
        return bytes(s,encoding='utf-8')
    def home(url):
        # 打开home.html文件
        with open('home.html','r',encoding='utf-8') as f:
            s=f.read()
        return bytes(s,encoding='utf-8')
    
    # 定义一个url和世纪要执行的函数的对应关系
    list1=[
        ('/index/',index),
        ('/home/',home),
    ]
    
    def run_server(environ,start_response):
        start_response('200 OK',[('Content-Type','text/html;charset=utf-8'),])  #设置http响应的状态码和头信息
        url = environ['PATH_INFO']  # 取到用户输入的url
        func = None
        for i in list1:
            if i[0] == url:
                func = i[1]
                break
        if func:
            response = func(url)
        else:
            response = b'404 not found!'
        return [response,]
    
    if __name__ == '__main__':
        httpd= make_server('127.0.0.1',8080,run_server)
        print('我在')
        httpd.serve_forever()
    

      # jinja2模块

      上面代码实现了一个简单的动态,完全可以从数据库中查询数据,然后去替换我html中对应内容,然后再发送给浏览器完成渲染,这个过程就相当于html模板渲染数据。本质上就是html内容中利用一些特殊的符号来替换要展示的数据,我们这里用的是我们自己定义的,可以用模板渲染有个线程的工具:jinja2

      下载jinja2:

      pip install jinja2

  • 相关阅读:
    接口运用实例
    C# Lambda表达式运用
    图片转换图片流方法(二进制流)
    简单的winform编辑器
    C# OO(初级思想)。
    MVC知识点
    提高sql查询效率
    DataRead 和DataSet区别
    JavaScript内置对象与原生对象【转】
    Cookie,Sesstion,Application 缓存。
  • 原文地址:https://www.cnblogs.com/yangzhaon/p/11110702.html
Copyright © 2011-2022 走看看