- 基础: 视图和MIME类型
基础: 视图和MIME类型
回顾一下第三章,视图函数只是一个以Web请求为参数并返回Web响应的Python函数。 这个响应可以是一个Web页面的HTML内容,或者一个跳转,或者一个404 错误,或者一个XML文档,或者一幅图片,或者映射到任何东西上。
更正式的说,一个Django视图函数 必须
接受一个
HttpRequest
实例作为它的第一个参数返回一个
HttpResponse
实例
从一个视图返回一个非 HTML 内容的关键是在构造一个 HttpResponse
类时,需要指定 mimetype
参数。 通过改变 MIME 类型,我们可以通知浏览器将要返回的数据是另一种类型。
下面我们以返回一张PNG图片的视图为例。 为了使事情能尽可能的简单,我们只是读入一张存储在磁盘上的图片:
from django.http import HttpResponse
def my_image(request):
image_data = open("/path/to/my/image.png", "rb").read()
return HttpResponse(image_data, mimetype="image/png")
就是这么简单。 如果改变 open()
中的图片路径为一张真实图片的路径,那么就可以使用这个十分简单的视图来提供一张图片,并且浏览器可以正确显示它。
另外我们必须了解的是HttpResponse
对象实现了Python标准的文件应用程序接口(API)。 这就是说你可以在Python(或第三方库)任何用到文件的地方使用”HttpResponse”实例。
下面将用 Django 生成 CSV 文件为例,说明它的工作原理。