web框架
Posted yangzhaon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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(‘@@[email protected]@‘,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
以上是关于web框架的主要内容,如果未能解决你的问题,请参考以下文章