这篇文档阐述了如何通过使用Django视图动态输出PDF。这可以通过一个出色的、开源的Python PDF库ReportLab来实现。动态生成PDF文件的优点是,你可以为不同目的创建自定义的PDF -- 这就是说,为不同的用户或者不同的内容。例如,Django在kusports.com上用来为那些参加March Madness比赛的人,生成自定义的,便于打印的 NCAA 锦标赛晋级表作为PDF文件。
这篇文档阐述了如何通过使用Django视图动态输出CSV (Comma Separated Values)。 你可以使用Python CSV 库或者Django的模板系统来达到目的。使用Python CSV库Python自带了CSV库,csv。在Django中使用它的关键是,csv模块的CSV创建功能作用于类似于文件的对象,并且Django的HttpResponse对象就是类似于文件的对象。这里是个例子:import csvfrom django.
这里的索引提供基于类的视图的另外一种组织形式。对于每个视图,在类继承树中有效的属性和方法都显示在该视图的下方。按照行为进行组织的文档,参见基于类的视图。
基于类的视图的API 参考。另请参见基于类的视图 的简介。
随着 Python 的火热,这款由 Python 编写的Web框架也随之崛起。制作 Wiki 版 Django 文档是为了更好的支持Django 文档协作翻译小组的翻译工作。
表单的处理通常有3 个步骤:初始的的GET (空白或预填充的表单)带有非法数据的POST(通常重新显示表单和错误信息)带有合法数据的POST(处理数据并重定向)你自己实现这些功能经常导致许多重复的样本代码(参见在视图中使用表单)。为了避免这点,Django 提供一系列的通用的基于类的视图用于表单的处理。基本的表单根据一个简单的联系人表单:#forms.
编写Web应用可能是单调的,因为你需要不断的重复某一种模式。 Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历这种厌烦。Django的通用视图被开发用来消除这一痛苦。它们采用某些常见的习语和在开发过 程中发现的模式然后把它们抽象出来,以便你能够写更少的代码快速的实现基础的视图。
视图是一个可调用对象,它接收一个请求然后返回一个响应。这个可调用对象可以不只是函数,Django 提供一些可以用作视图的类。它们允许你结构化你的视图并且利用继承和混合重用代码。后面我们将介绍一些用于简单任务的通用视图,但你可能想要设计自己的可重用视图的结构以适合你的使用场景。完整的细节,请参见基于类的视图的参考文档。
如果你需要提供自定义文件存储 – 一个普遍的例子是在某个远程系统上储存文件 – 你可以通过定义一个自定义的储存类来实现。你需要遵循以下步骤:1. 你的自定义储存类必须是django.core.files.storage.Storage的子类:from django.core.files.storage import Storageclass MyStorage(Storage): ...2. Django必须能够不带任何参数来实例化你的储存类。
这篇文档描述了Django为那些用户上传文件准备的文件访问API。底层的API足够通用,你可以使用为其它目的来使用它们。如果你想要处理静态文件(JS,CSS,以及其他),参见管理静态文件(CSS和图像)。通常,Django使用MEDIA_ROOT和 MEDIA_URL设置在本地储存文件。下面的例子假设你使用这些默认值。
获取当前的储存类Django提供了两个便捷的方法来获取当前的储存类:class DefaultStorage[source]DefaultStorage 提供对当前的默认储存系统的延迟访问,像DEFAULT_FILE_STORAGE中定义的那样。DefaultStorage 内部使用了get_storage_class()。get_storage_class([import_path=None])[source]返回实现储存API的类或者模块。
django.core.files模块及其子模块包含了一些用于基本文件处理的内建类。File类class File(file_object)File 类是Python file 对象的一个简单封装,并带有Django特定的附加功能。需要表示文件的时候,Django内部会使用这个类。File对象拥有下列属性和方法:name含有MEDIA_ROOT相对路径的文件名称。size文件的字节数。file这个类所封装的,原生的file 对象。
当Django在处理文件上传的时候,文件数据被保存在request. FILES (更多关于 request 对象的信息 请查看 请求和响应对象)。这篇文档阐述了文件如何上传到内存和硬盘,以及如何自定义默认的行为。警告允许任意用户上传文件是存在安全隐患的。更多细节请在用户上传的内容中查看有关安全指导的话题。基本的文件上传考虑一个简单的表单,它含有一个FileField:# In forms.
标准的HttpResponse 对象是静态的结构。在构造的时候提供给它们一个渲染之前的内容,但是当内容改变时它们却不能很容易地完成相应的改变。然而,有时候允许装饰器或者中间件在响应被构造之后修改它是很有用的。例如,你可能想改变使用的模板,或者添加额外的数据到上下文中。TemplateResponse 提供了实现这一点的方法。
有几个Django 的内建视图在编写视图 中讲述,文档的其它地方也会有所讲述。开发环境中的文件服务器static.serve(request, path, document_root, show_indexes=False)在本地的开发环境中,除了你的项目中的静态文件,可能还有一些文件,出于方便,你希望让Django 来作为服务器。serve() 视图可以用来作为任意目录的服务器。
关注时代Java