当前位置:K88软件开发文章中心网站服务器框架django → 文章内容

Django 集成的子框架

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-25 14:19:27

 FlatpageFallbackMiddleware 将完成(剩下)所有的工作。 每当 Django 引发 404 错误,作为最后的办法,该中间件将根据所请求的 URL 检查简单页面数据库。 确切地说,它将使用所指定的 URL以及 SITE_ID 设置对应的站点 ID 查找一个简单页面。如果找到一个匹配项,它将载入该简单页面的模板(如果没有指定的话,将使用默认模板flatpages/default.html )。 同时,它把一个简单的上下文变量flatpage(一个简单页面对象)传递给模板。 模板解析过程中,它实际用的是RequestContext。如果 FlatpageFallbackMiddleware 没有找到匹配项,该请求继续如常处理。注意该中间件仅在发生 404 (页面未找到)错误时被激活,而不会在 500 (服务器错误)或其他错误响应时被激活。 还要注意的是必须考虑 MIDDLEWARE_CLASSES 的顺序问题。 通常,你可以把 FlatpageFallbackMiddleware放在列表最后,因为它是最后的办法。添加、修改和删除简单页面可以用两种方式增加、变更或删除简单页面:通过超级管理界面如果已经激活了自动的 Django 超级管理界面,你将会在超级管理页面的首页看到有个 Flatpages 区域。 你可以像编辑系统中其它对象那样编辑简单页面。通过 Python API前面已经提到,简单页面表现为 django/contrib/flatpages/models.py 中的标准 Django 模型。这样,你就可以使用Django数据库API来存取简单页面对象,例如:>>> from django.contrib.flatpages.models import FlatPage>>> from django.contrib.sites.models import Site>>> fp = FlatPage.objects.create(... url='/about/',... title='About',... content='About this site...',... enable_comments=False,... template_name='',... registration_required=False,... )>>> fp.sites.add(Site.objects.get(id=1))>>> FlatPage.objects.get(url='/about/')使用简单页面模板缺省情况下,系统使用模板 flatpages/default.html 来解析简单页面,但你也可以通过设定 FlatPage 对象的template_name 字段来更改特定简单页面的模板。你必须自己创建 flatpages/default.html 模板。 只需要在模板目录创建一个 flatpages 目录,并把default.html 文件置于其中。简单页面模板只接受有一个上下文变量—— flatpage ,也就是该简单页面对象。以下是一个 flatpages/default.html 模板范例:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head><title>{{ flatpage.title }}</title></head><body>{{ flatpage.content|safe }}</body></html>注意我们使用了safe模板过滤器来允许flatpage.content引入原始HTML而不必转义。重定向通过将重定向存储在数据库中并将其视为 Django 模型对象,Django 重定向框架让你能够轻松地管理它们。 比如说,你可以通过重定向框架告诉Django,把任何指向 /music/ 的请求重定向到 /sections/arts/music/ 。当你需要在站点中移动一些东西时,这项功能就派上用场了——网站开发者应该穷尽一切办法避免出现坏链接。使用重定向框架安装重定向应用程序必须遵循以下步骤:将 'django.contrib.redirects' 添加到 INSTALLED_APPS 设置中。将 'django.contrib.redirects.middleware.RedirectFallbackMiddleware' 添加到 MIDDLEWARE_CLASSES设置中。运行 manage.py syncdb 命令将所需的表添加到数据库中。manage.py syncdb 在数据库中创建了一个 django_redirect 表。 这是一个简单的查询表,只有site_id、old_path和new_path三个字段。你可以通过 Django 超级管理界面或者 Django 数据库 API 来创建重定向。 要了解更多信息,请参阅“增加、变更和删除重定向”一节。一旦创建了重定向, RedirectFallbackMiddleware 类将完成所有的工作。 每当 Django 应用引发一个 404 错误,作为终极手段,该中间件将为所请求的 URL 在重定向数据库中进行查找。 确切地说,它将使用给定的old_path 以及 SITE_ID 设置对应的站点 ID 查找重定向设置。 (查阅前面的“多站点”一节可了解关于SITE_ID 和多站点框架的更多细节) 然后,它将执行以下两个步骤:如果找到了匹配项,并且 new_path 非空,它将重定向到 new_path 。如果找到了匹配项,但 new_path 为空,它将发送一个 410 (Gone) HTTP 头信息以及一个空(无内容)响应。如果未找到匹配项,该请求将如常处理。该中间件仅为 404 错误激活,而不会为 500 错误或其他任何状态码的响应所激活。注意必须考虑 MIDDLEWARE_CLASSES 的顺序。 通常,你可以将 RedirectFallbackMiddleware 放置在列表的最后,因为它是一种终极手段。注意如果同时使用重定向和简单页面回退中间件, 必须考虑先检查其中的哪一个(重定向或简单页面)。 我们建议将简单页面放在重定向之前(因此将简单页面中间件放置在重定向中间件之前),但你可能有不同想法。增加、变更和删除重定向你可以两种方式增加、变更和删除重定向:通过管理界面如果已经激活了全自动的 Django 超级管理界面,你应该能够在超级管理首页看到重定向区域。 可以像编辑系统中其它对象一样编辑重定向。同过Python API重定向表现为django/contrib/redirects/models.py 中的一个标准 Django 模型。因此,你可以通过Django数据库API来存取重定向对象,例如:>>> from django.contrib.redirects.models import Redirect>>> from django.contrib.sites.models import Site>>> red = Redirect.objects.create(... site=Site.objects.get(id=1),... old_path='/music/',... new_path='/sections/arts/music/',... )>>> Redirect.objects.get(old_path='/music/') /sections/arts/music/>CSRF 防护django.contrib.csrf 开发包能够防止遭受跨站请求伪造攻击 (CSRF).CSRF, 又叫会话跳转,是一种网站安全攻击技术。 当某个恶意网站在用户未察觉的情况下将其从一个已经通过身份验证的站点诱骗至一个新的 URL 时,这种攻击就发生了,因此它可以利用用户已经通过身份验证的状态。 乍一看,要理解这种攻击技术比较困难,因此我们在本节将使用两个例子来说明。一个简单的 CSRF 例子假定你已经登录到 example.com 的网页邮件账号。该网站有一个指向example.com/logout的注销按钮。就是说,注销其实就是访问example.com/logout。通过在(恶意)网页上用隐藏一个指向 URL example.com/logout 的  ,

上一页  [1] [2] [3] [4] [5] [6]  下一页


Django 集成的子框架