一个Web应用的本质就是:

浏览器发送一个HTTP请求;

服务器收到请求,生成一个HTML文档;

服务器把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负责业务逻辑,比如检查用户名是否存在,取出用户信息等等;

包含变量{{ 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/

最新文章

  1. webpack-dev-server轻量级js高速打包、热部署服务器
  2. fix orphaned user
  3. C#大文件读取和查询--内存映射
  4. 虚拟机安装Ubuntu到U盘
  5. web前端开发工程师,你了解吗?
  6. Python基础 第二天
  7. iOS 开发--添加工程
  8. 利用反射完成初级万能DAO
  9. NuGet学习笔记
  10. HTTP请求中浏览器的缓存机制
  11. 在ADS上由于volatile惹得祸
  12. 不同浏览器对parseInt方法解析的不同
  13. apache利用.htaccess实现部分页面301
  14. Mysql动态sql语句,用当前时间做表名
  15. 【NIFI】 Apache NiFI 集群搭建
  16. TensorFlow实战Google深度学习框架5-7章学习笔记
  17. Linux命令博客目录
  18. SQLserver 字符串转换日期,日期转换成为字符串
  19. Memcached安装&amp;启动
  20. JERSEY中文翻译(第一章、Getting Started、1.1.7)

热门文章

  1. 怎样更好的深入学习andorid
  2. cf #257(Div.2) A. Jzzhu and Children
  3. 开心的小明(南阳oj49)(01背包)
  4. c语言运算符优先级与while循环案例
  5. 【App 开发框架 - App Framework】
  6. WIN7使用VisualSVN建立SVN服务器
  7. vue引入swiper vue使用swiper vue脚手架使用swiper /引入js文件/引入css文件
  8. SVN 部分常用命令
  9. [转]C++ 获取文件夹下的所有文件名
  10. POJ 3190 Stall Reservations 【贪心 优先队列】