原文:What is Python's Django used for? 5 Key Reasons I Use the Django Framework for Client Projects,作者:Gwendolyn Faraday
如果几年前你告诉我我会选择 Python 的 Django 作为我的客户端项目首选框架,我不会相信你。
那时,我更喜欢 Flask 和 Express 等轻量级框架,因为它们的灵活性和它们为我提供的额外控制。
发生了什么变化?
部分原因是我被聘用在 Django 工作!另一部分原因则是我厌倦了为不同的公司从头开始一遍又一遍地设置相同的功能——用于数据库、迁移、身份验证系统、电子邮件等的 ORM。设置所有这些功能并使其正常工作非常耗时。
好吧,Django 以最少的开箱即用配置为我提供了所有这些。是的,太棒了。
使用 Django,我可以在不牺牲功能的情况下更快地构建应用程序。开发人员的体验也非常好——不仅仅是因为 Python 很棒,也是因为有很好的调试工具,日志已经设置好了,还有一个服务器会随着文件的变化自动重启。
Django 的管理界面
我首先列出这个是因为它是 Django 中我最喜欢的部分。
如此多的客户需要查看他们的应用程序,以便他们可以管理页面上的用户、数据或内容。通常,客户不会是技术人员,也没有足够的时间深入研究实际代码并进行更改。
那么处理这种情况的最佳方法是什么?
Django 的管理界面是一个很好的解决方案。无需任何额外配置,你将获得一个强大的、完全可定制的、受登录保护的管理区域,该区域显示你的应用程序的所有数据。

这个管理区的数据包括你想在这里列出的任何表格,以及来自第三方软件包的所有表格,如 auth 库。
Django 有内置的 Auth
几乎每个应用程序都需要某种认证,所以市场上有很多工具、服务和库可以使用。因为有这么多的选择,所以要选择一个是很困难的。即使你使用了一个管理服务,将其连接起来也并不容易。
那么,Django 内置了通过会话的认证。如果你想使用令牌呢?只要安装 Django REST 框架(DRF)库就可以了,它带有令牌认证。
我个人喜欢使用 DRF 和 dj-rest-auth 库结合,以获得额外的功能,如过期令牌。无论哪种方式,所有这些部分都能在 Django 生态系统中无缝协作,只需要很少的配置。
这是一个 Django repo 的例子,我在 Django 中用 Django REST 框架设置了 token auth(和 GitHub auth)。
你在 Django 项目中使用的任何认证系统也会使用 ORM。所以,接下来让我们来谈谈这其中的一些好处。
ORM
你有没有尝试过手动设置一个 ORM 来连接你的数据库和你的应用程序?例如,SQLAlchemy、TypeORM 或 Sequelize。即使有很好的文档,这也不容易。你必须让不同类型的查询工作,以及迁移等等。
Django 为你提供了开箱即用的所有功能。只需插入你喜欢的数据库——Postgres、MySQL、Mongo 等等的凭证,Django 就能处理剩下的事情。无论你选择什么数据库,你都可以通过相同的 Python 接口来创建模型并与之交互。
这里只需要注意:除非你是 SQL 大师或者有非常特殊的情况,否则你应该在每个应用程序中使用 ORM 来与数据库进行交互。
到目前为止,所有列出的功能都不是 Python Django 独有的。不同的是,大多数框架都允许你设置自己的 ORM、认证等,而使用 Django,你只需很少的努力就能完成所有这些工作。这意味着你可以更快速地交付功能、MVP 和应用程序。
开发速度
Python 是一种常用于快速制作原型和构建应用程序的语言。Django 为你提供了 Python 的速度和力量,以及许多额外的内置功能,帮助你更快地构建 Web 应用和 API。
创建决定和研究工具和库需要花费大量的时间来实际编写代码。Django 有很好的记录方式,这就减少了你可能花费的额外时间,为自己找出一个好的解决方案。
从为你启动一个项目,到创建复杂的查询,再到部署你的应用程序,如果你遇到困难,Django 为你提供了大量的文档和一个庞大的社区来帮助你。
不过,不仅仅是核心的 Django 库可以帮助你更快地构建应用程序,Django 还有大量具有通用 API 的插件,因此你可以对如何在你的项目中使用任何一个插件有一定的期望。
Django 插件
想建立一个CMS?Django 就有这样的一个插件。事实上,有不少这样的插件。如果你在 GitHub 和 DjangoPackages.org 上搜索,你会发现有大量的解决方案,几乎可以满足任何使用情况。
以下是我最喜欢的一些:
- Django Rest Framework:路由器、序列化器和其他工具,使构建 API 变得简单。
- Django Graphene:使得在 Django 应用程序中添加 GraphQL 功能变得容易。
- Wagtail:为 Django 添加了一个漂亮的 CMS 风格的界面,为常见的 CMS 用例提供了大量的内置功能。
- Django Crispy Forms:如果你正在构建全栈应用程序,这个软件包可以使模板内的表单工作更加简洁和容易。
- Django Debug Toolbar:这是一个 Django 项目的必备工具。你可以用这个工具来调试从 SQL 查询到模板的一切。
我希望我已经让你对 Django 有了足够的了解,并想自己尝试一下。让我知道进展如何:)
我作为 RocketBuild 的高级软件开发人员,与一个很棒的团队一起工作。我们用 Django、React 和其他技术建立了很多很酷的项目。
如果你想看到更多的 Django、Python 和 JavaScript 内容,请查看我的 YouTube 频道 Faraday Academy,或者在 Twitter 上与我取得联系 @faradayacademy。