一个Web应用的本质就是:html
浏览器发送一个HTTP请求;前端
服务器收到请求,生成一个HTML文档;web
服务器把HTML文档做为HTTP响应的Body发送给浏览器;浏览器
浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。服务器
接口,让咱们专心用Python编写Web业务。
这个接口就是WSGI:Web Server Gateway Interface。
WSGI接口定义很是简单,它只要求Web开发者实现一个函数,就能够响应HTTP请求。咱们来看一个最简单的Web版本的“Hello, web!”:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return [b'<h1>Hello, web!</h1>']前端工程师
Python处理URL的函数就是C:Controller,Controller负责业务逻辑,好比检查用户名是否存在,取出用户信息等等;app
包含变量{{ name }}的模板就是V:View,View负责显示逻辑,经过简单地替换一些变量,View最终输出的就是用户看到的HTML。框架
MVC中的Model在哪?Model是用来传给View的,这样View在替换变量的时候,就能够从Model中取出相应的数据。函数
经过MVC,咱们在Python代码中处理M:Model和C:Controller,而V:View是经过模板处理的,这样,咱们就成功地把Python代码和HTML代码最大限度地分离了。调试
使用模板的另外一大好处是,模板改起来很方便,并且,改完保存后,刷新浏览器就能看到最新的效果,这对于调试HTML、CSS和JavaScript的前端工程师来讲实在是过重要了。
在Jinja2模板中,咱们用{{ name }}表示一个须要替换的变量。不少时候,还须要循环、条件判断等指令语句,在Jinja2中,用{% ... %}表示指令。
除了Jinja2,常见的模板还有:
Mako:用<% ... %>和${xxx}的一个模板;
Cheetah:也是用<% ... %>和${xxx}的一个模板;
Django:Django是一站式框架,内置一个用{% ... %}和{{ xxx }}的模板。
参考文档
https://www.liaoxuefeng.com/