title: Django category: page slug: django sortorder: 0403 toc: False sidebartitle: Django meta: 在 Full Stack Python 上学习更多 Django 知识, Django 是一个流行的且功能完备的 Python Web 框架。 authors: haiiiiiyun.github.io updated: 2016-06-12 08:27
Django
Django 是一个广为使用的 Python Web 应用框架,它奉行 “包含一切” 的哲学。该理念即为:创建 Web 应用所需的通用功能都应该包含到框架中,而不应存在于独立的软件包中。
例如,身份验证、 URL 路由、 模板系统、 对象关系映射 (ORM) 和 数据库迁移 (版本 1.7) 等功能都已包含在 Django 框架 中。 Flask 框架与 Django 相比,并没有包含这么多的功能,例如它还需要一个独立的 Flask-Login 库来实现用户身份验证。
包含一切和易扩展性是实现框架时采用的两种不同哲学罢了,再两种方式各有千秋,不能说哪一种会再好。
为什么说 Django Web 框架是一个不错的选择
自创建以来, Django 项目的稳定性、高性能和它的社区在过去的十年中有了长足的发展。现在已经有大量的在线资源和图书资料,从中你能找到详细的教程和实践指南。该框架还在不断地往新版本中增加诸如 数据迁移 新功能。
我非常推荐 Python Web 开发新手使用 Django 框架,因为它的官方文档和一些教程的质量在软件开发界都是数一数二的。许多城市都有 Django 团体,如 Django District、 Django Boston 和 San Francisco Django,因此新手在碰到难题时能获得帮助。
虽然有 通过使用 Django 来学习 Python 是不好的 这样的争议。但是,对于先前已经花时间学过 Python 语法和语义,然后才转入 Web 开发的人来说,这样的说法是站不住脚的。
Django 图书和教程
已经有大量的免费或低价的 Django 资源。不过 Django 是在 10 年前发布的,并且之后又进行了大量的更新,因此当你要找一本与时俱进的 Django 图书时,应该先看看下面的这份列表,或者读下这篇文章 当前的 Django 图书,截止到 Django 1.8,1.9。
Python 测试驱动开发 着重讲解如何用 Django 和 JavaScript 进行 Web 开发。该书将 Django 作为网站开发框架,并以一个实际案例的开发为例,讲解了如何进行测试驱动开发(TDD)。它的内容还涉及到 NoSQL、 Websocket 和异步响应等。该书能在网上免费阅读,或者你也可以购买 O’Reilly 的纸质版本。
和 Django 跳探戈 上有一系列内容丰富的免费文章,介绍如何使用这个最受欢迎的 Python Web 框架。 现在很多开发人员都说这份资料对于他们克服刚开始学习框架时的困难很有帮助。这份资料最近已更新到 Django 1.7!
Django 宅女教程 是一份不错的教程,它能帮助你创建你的首个 Web 应用,并且不要求你之前有任何 Python 或 Django 相关知识。
由 Daniel Greenfeld 和 Audrey Roy 写的 2 Scoops of Django 对于真正想学好如何正确开发 Django 网站的人来说物有所值。
这篇教程展示了如何创建 一个 Django Web 应用,它能通过打电话和发短信实现自动调查。 它的代码是一个非常不错的完整 Django 项目示例,并且已在 GitHub 上开源了。
高效 Django 是另一份介绍 Web 框架的免费资料。
Django subreddit 上经常会有与 Django 学习相关的最新链接,并且那里也是个提 Django 问题的好地方。
Steve Losh 写了一篇详实精彩的文章 Django 忠告指南。
轻量化 Django 上有一些不错的示例,详述如何将 Django 分解成一些更小的组件。
Django 部署权威指南 对配置后的结构进行讲解,并包含一个自动化部署的 Chef 脚本。
Django 分步指南 展示了如何在 JQuery 中通过 AJAX 传输数据。
django-awesome 是一份精心整理的 Django 库和资源的列表。
开始一个 Django 项目 解答了这个问题:“我如何从零开始配置一个 Django (1.5, 1.6, 1.7, or 1.8) 项目?”。
这份 Django 教程讲解了 如何使用 Twitter Bootstrap、 Bower、 Requests 和 Github API 从零开始创建一个项目。
推荐的 Django 项目布局 能帮助 Django 开发新手理解项目中每个App的目录和文件是如何组织的。
Django 整合 Python 社交认证教程 向你展示了如何在你的 Django 应用中集成社交媒体登录按钮。
由 Luke Plant 所写的 他自己的基于类的视图的另一种方法 (CBVs)这篇文章,经常会在 Django 社区中激起关于 CBV 是否能节省时间或者对于框架来说它是否”太过神奇“等的热烈争论。
如何在 Ubuntu 14.04 上使用 uWSGI 和 Nginx 部署 Django 应用 及 如何设置 Django 、 PostgreSQL、 Nginx 和 Gunicorn 这两个教程,详细演示了部署过程中的每个步骤。
每个 Web 应用都应处理好时区问题。这篇 发布在 pytz and Django 上的文章 对于你需要为此了解哪些知识给你指明了方向。
Django 视频资源
除了文章,你还想找 Django 视频吗?在 最佳 Python 视频 页上有一节专门针对 Django 和 Web 开发的。
Django 迁移
Paul Hallett 发布在 Twilio 博客上的文章 Django 1.7 应用升级详细指南 讲述了他对 django-twilio 包的使用经验。
Real Python 上的 迁移入门教程 探讨了 South 与 Django 内置的迁移功能之间的区别,并介绍了它们的使用方法。
Andrew Pinkham 写的 ”升级到 Django 1.7“ 系列文章是很好的学习材料,据此你能了解该版本主要进行了哪些更新,以及能学到应如何相应地对你的 Django 项目进行更新。 第 1 部分、 第 2 部分、 第 3 部分 和 第 4 部分 现在都能找到。
不下线迁移 Django 展示了如何在 Django 站点不下线的情况下进行数据迁移。
1.9+ 中的通道
通道是 Django 1.9 的一种新机制(作为一个独立应用,稍后会合并到核心框架中),它能基于 WebSocket 实现浏览器与服务器之间的实时双向通讯。
这个通道示例代码库 里有一些不错的初始项目,如实时博客和聊天应用等,可以用作你的基础代码。
通道目前使用 Django 现有的认证机制,但是这篇文章 在 Django 通道中使用 JSON Web Tokens 认证 展示了如何在 Django 通道中使用第三方的 JSON Web Token (JWT) 进行实现。
Django 测试
Django 集成前端工具 这篇文章指出了如何在开发环境或生产环境的 Django 网站上使用 Gulp 来处理前端工具。
开始 Django 测试 将使你不再耽搁你的 Django 项目测试计划,如何你之前不知从何开始测试的话。
Django 测试 提供了大量的示例,并据此讲解如何对你的 Django 项目代码进行测试。
使用 Selenium 对 Django 视图进行自动化测试 使用了一些示例代码来演示如何在浏览器里使用 Selenium 进行测试。
Django 及 Angular (Djangular) 资源
Django Rest 框架与 AngularJS 入门 是一篇有关 Djangular 的详细介绍,并附带示例代码。
用 Django 和 AngularJS 创建 Web 应用 是一篇非常详实的指南,讲述如何以 Django 作为 API 层以及将 AngularJS 作为浏览器 MVC 前端进行开发。
这篇教程 用 Django-Rest 框架 & AngularJS 进行 Web 应用开发,第 1 部分 以及其 第 2 部分、 第 3 部分 和 第 4 部分 讲述了如何用 Djangular 创建一个示例博客系统。该项目的代码存放在 GitHub 上。
Django-angular 这个代码库意在使 Django 和 AngularJS 在前端开发上更匹配。
Django ORM 资源
Django 有自己内置的的对象关系映射器(ORM), 通常指代为 “the Django ORM”。到 Python 对象关系映射页 上了解 Django ORM 相关的更多信息,那上面有一节是专门解读 Django ORM的,当然上面还有其它的资源和教程。
静态和媒体文件
Django 初级开发人员对于如何部署和处理静态和媒体文件会感觉困惑。下面列出的资料以及 静态内容 那一页上的资源对于搞清楚如何正确处理这些文件很有帮助。
使用 Amazon S3 来存储你的 Django 站点静态和媒体文件 是一篇很好的文章,解答了如何部署静态和媒体文件这个通常被问到的问题。
从文件系统中导入 Django FileField 和 ImageFields 向你展示了数据模型的文件类型的项值是如何从文件系统中导入的。
在 Django 中限制对用户上传的文件的访问 提供了对媒体文件的一种保护机制。
开源 Django 示例项目
使用 Django 和 Twilio 制作浏览器通话器 展示了如何利用 Django 和 Twilio 客户端 来创建一个 Web 应用,将用户的浏览器改造成一个全功能的电话机。非常有趣。
Txt 2 React 是一个 Django Web 应用,它能让观众一边观看演示,一边输入反馈信息或者提问。
Openduty 是一个网站状态检查和报警系统,类似于 PagerDuty。
Courtside 是一个收集体育活动信息的 Web 应用,由 PyCoder‘s Weekly 的作者编写和维护。
Django 交互式语音应答系统 (IVR),它的两份 Web 应用代码库: 第 1 部分 和 第 2 部分 向你展示了如何创建一个真正有趣的 Django 应用 。它还有相应的 文章, 对其中的每一个步骤进行了详细的讲解。
Taiga 是一个项目管理工具,后端用 Django 开发,前端用 AngularJS 开发。
Django 项目模板
Caktus Group Django 项目模板 适用于 Django 1.6+。
Cookiecutter Django 这个项目模板出自 Daniel Greenfeld,它使用了 Audrey Roy 的 Cookiecutter。使用该模板的项目部署到 Heroku 上非常容易。
Two Scoops Django 项目模板 同样来自 PyDanny 和 Audrey Roy。这个模板提供了一个在《Two Scoops of Django》那本书中描述过的快速代码框架。
Sugardough 这个 Django 项目模板来自 Mozilla,并与 cookiecutter 兼容。
Django 学习清单
在你的本地开发机器上 安装 Django。
依据 “polls” 这个教程进行练习。
依据 “Django 资源” 那一节上的相关教程,创建一些简单的应用。
参考 官方文档 以及上面的资源链接,开始编写你自己的 Django 项目。当然你会犯错误,但这是你学习如何正确的创建应用的必经之路。
阅读 2 Scoops of Django 来理解 Django 的最佳实践,并学会什么是创建 Django Web 应用的更好方式。
查看 部署那一章,将你的 Django 项目发布到网上。