这篇文档介绍了Django自带的所有中间件组件。 要查看关于如何使用它们以及如何编写自己的中间件,请见中间件使用指导。可用的中间件缓存中间件class UpdateCacheMiddleware[source]class FetchFromCacheMiddleware[source]开启全站范围的缓存。 如果开启了这些缓存,任何一个由Django提供的页面将会被缓存,缓存时长是由你在CACHE_MIDDLEWARE_SECONDS配置中定义的。
中间件是一个介入Django的请求和响应的处理过程中的钩子框架。它是一个轻量级,底层的“插件”系统,用于在全局修改Django的输入或输出。中间件组件责任处理某些特殊的功能。例如,Django包含一个中间件组件,AuthenticationMiddleware ,使用会话将用户和请求关联。这篇文档讲解了中间件如何工作,如何激活中间件,以及如何编写自己的中间件。
由于Django是在一个快节奏的新闻编辑室环境下开发出来的,因此它被设计成让普通的网站开发工作简单而快 捷。以下简单介绍了如何用 Django 编写一个数据库驱动的Web应用程序。本文档的目标是给你描述足够的技术细节能让你理解Django是如何工作的,但是它并不表示是一个新手指南或参考目录 – 其实这些我们都有!
这篇文档阐述了如何通过使用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 参考。另请参见基于类的视图 的简介。
表单的处理通常有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 提供了实现这一点的方法。
关注时代Java