由于历史因素,Django自带了django.contrib.localflavor -- 各种各样的代码片段,有助于在特定的国家地区或文化中使用。为了便于维护以及减少Django代码库的体积,这些代码现在在Django之外单独发布。详见官方文档:https://django-localflavor.readthedocs.org/这些代码托管在GIthub上面,https://github.com/django/django-localflavor。
概览Django的格式化系统可以在模板中使用当前地区特定的格式,来展示日期、时间和数字。也可以处理表单中输入的本地化。当它被开启时,访问相同内容的两个用户可能会看到以不同方式格式化的日期、时间和数字,这取决于它们的当前地区的格式。格式化系统默认是禁用的。需要在你的设置文件中设置USE_L10N = True来启用它。
由于Django是在一个快节奏的新闻编辑室环境下开发出来的,因此它被设计成让普通的网站开发工作简单而快 捷。以下简单介绍了如何用 Django 编写一个数据库驱动的Web应用程序。本文档的目标是给你描述足够的技术细节能让你理解Django是如何工作的,但是它并不表示是一个新手指南或参考目录 – 其实这些我们都有!
概述国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。实际上,Django做了两件事:由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。根据用户的偏好设置,使用钩子将web应用本地化。
Django 提供了一种健壮的国际化和本地化框架来帮助你实现多种语言和世界区域范围的开发。
web应用安全的黄金法则是,永远不要相信来自不可信来源的数据。有时通过不可信的媒介来传递数据会非常方便。密码签名后的值可以通过不受信任的途径传递,这样是安全的,因为任何篡改都会检测的到。Django提供了用于签名的底层API,以及用于设置和读取被签名cookie的上层API,它们是web应用中最常使用的签名工具之一。
点击劫持中间件和装饰器提供了简捷易用的,对点击劫持的保护。这种攻击在恶意站点诱导用户点击另一个站点的被覆盖元素时出现,另一个站点已经加载到了隐藏的frame或iframe中。点击劫持的示例假设一个在线商店拥有一个页面,已登录的用户可以点击“现在购买”来购买一个商品。用户为了方便,可以选择一直保持商店的登录状态。
Django的开发小组坚定地承诺,为报告和公开安全相关问题负责,这在Django的安全问题中列出。作为承诺的一部分,我们保留了下面的问题的历史列表,这些问题已经被解决和公开。对于每个问题,下面的列表包含日期、简短的描述、CVE 标识符、受影响的版本列表、完整的页面链接以及相应补丁的连接。
这份文档是 Django 的安全功能的概述。 它包括给 Django 驱动的网站一些加固建议。跨站脚本 (XSS) 防护XSS攻击允许用户注入客户端脚本到其他用户的浏览器里。 这通常是通过存储在数据库中的恶意脚本,它将检索并显示给其他用户,或者通过让用户点击一个链接,这将导致攻击者的 JavaScript 被用户的浏览器执行。
安全在Web应用开发中是一项至关重要的话题,Django提供了多种保护手段和机制:
Django的admindocs应用从模型、视图、模板标签以及模板过滤器中,为任何INSTALLED_APPS中的应用获取文档。并且让文档可以在Django admin中使用。在某种程度上,你可以使用admindocs来快为你自己的代码生成文档。这个应用的功能十分有限,然而它主要用于文档模板、模板标签和过滤器。例如,需要参数的模型方法在文档中会有意地忽略,因为它们不能从模板中调用。
简而言之,Django管理后台的基本流程是,“选择一个对象并改变它”。在大多数情况下,这是非常适合的。然而当你一次性要对多个对象做相同的改变,这个流程是非常的单调乏味的。在这些例子中,Django管理后台可以让你实现和注册“操作” —— 仅仅只是一个以已选中对象集合为参数的回调函数。在Django自带的管理页面中都能看到这样的例子。
Django 最受欢迎的特性之一 —— 自动生成的Admin 界面的所有内容:
当你运行一个公开站点时,你应该始终关闭DEBUG 设置。这会使你的服务器运行得更快,也会防止恶意用户看到由错误页面展示的一些应用细节。但是,运行在 DEBUG为False的情况下,你不会看到你的站点所生成的错误 -- 每个人都只能看到公开的错误页面。你需要跟踪部署的站点上的错误,所以可以配置Django来生成带有错误细节的报告。
另见django.contrib.staticfiles 的用法简介,请参见管理静态文件(CSS、images)。在线上环境部署静态文件放置静态文件到线上环境的基本步骤很简单:当静态文件改变时,运行collectstatic 命令,然后安排将收集好的静态文件的目录(STATIC_ROOT) 搬到静态文件服务器上。
Django 首要的部署平台是WSGI,它是Python Web 服务器和应用的标准。Django 的startproject 管理命名为你设置一个简单的默认WSGI 配置,你可以根据你项目的需要做调整并指定任何与WSGI 兼容的应用服务器使用。
关注时代Java