Django: 路由与视图 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

Django与WSGI

根据Python的惯例,Django不是一个完整的Web后端框架,它只负责开发WSGI应用程序 ,在生产环境中Django应用应当与一个WSGI服务器配套,由WSGI服务器负责网络通讯部分。

WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口。

wsgi

WSGI将Web服务分成两个部分:服务器和应用程序。WGSI服务器只负责与网络相关的两件事:接收浏览器的 HTTP请求、向浏览器发送HTTP应答;而对HTTP请求的具体处理逻辑,则通过调用WSGI应用程序进行。

实现一个WSGI应用,只需要满足3个要求:

  1. 是可调用的,比如是一个函数,或者是一个可调用类(具有__call__方法)的实例
  2. WSGI应用应当返回一个可迭代(iterable)的值,比如字符串列表
  3. WSGI应用在返回之前,应当调用WSGI服务器传入的start_response函数发送状态码和HTTP报文头

最小WSGI应用

一种最简单的满足WSGI规约的应用程序需要实现一个指定形式的函数:

from wsgiref.simple_server import make_server

def wsgi_app(environ,start_response):
    start_response('200 OK',[('Context-Type','text/plain')])
    return 'such a tiny wsgi app!'

httpd = make_server('0.0.0.0',80,wsgi_app)    
httpd.serve_forever()

environ是一个包含全部HTTP请求信息的字典/Dict,由WSGI服务器解包HTTP请求生成。

运行示例代码,

1.思考一下,WSGI包含哪两个组成部分?

2.查看终端输出的environ内容,看看他包含了来自一个HTTP请求的哪些信息。