Django是一个成熟而强大的Web应用程序框架,提供了许多“包含电池”功能。 对于您如何使用它,这是相当自以为是的,这减轻了开发人员的许多认知负担。
采用Django或任何自以为是的框架,与任何关系都非常相似。 是的,存在缺陷和小小的挫折,但是如果您在其中投入并投入自己(以及您的团队),您将获得最大的收益。
- 优点
对数据进行简单管理
丰富的附件,插件和文档生态系统
与工具和IDE的出色集成
包括的大多数东西
强大的DX(开发人员经验)
命令行和长时间运行或守护进程的任务运行器
随着需求的变化,您可以成长为框架
缺点
没有完美的框架,Django也不例外。其中的许多内容在“必备”部分中进行了介绍。
- 部署困难-Django确实优化了DX(开发人员体验),但是缺乏良好的部署。这些天,有诸如Heroku或OpenShift之类的服务。也有开源替代方案(Dokku或CapRover)使它变得更加容易。
用户注册-尽管Django为典型的用户注册和管理提供了一些便利,但它并未提供考虑到安全性的完全成熟的工作流程。那就是你。
动态配置(例如-简单的12因子)-有一个settings.py文件,您可以在其中保存应用程序的配置,但通常将其视为静态文件。在开始时,您必须跳过几个步骤才能引入动态配置设置。
在实时环境中更改设置-将Django进程加载到内存后,无法更改您在settings.py文件中设置的设置。为了进行更改,您将需要更新并重新启动或重新部署服务。
生产中没有容易的静态资产服务
必备品
以下库是“必备资源”。 它们提供了基本的工具和快捷方式,使您可以快速而轻松地部署12要素应用程序。
Django的AllAuth
(简单的用户注册和管理)
您想要用户注册,密码重置流程以及oauth2提供程序支持许多社交服务吗? 请考虑django-allauth。
https://github.com/pennersr/django-allauth
White Noise
(提供静态资产)
这个库允许我们从Django应用程序中提供图片和javascript等静态资产。 它通常是一个简单的单线。 它消除了使用Nginx或CDN交付这些资产的需要。 在此处查看WhiteNoise。
https://github.com/evansd/whitenoise
DJ Email URL
(易于通过SMTP发送电子邮件的配置)
这个小库使您可以轻松地将SMTP凭证字符串从环境变量中解析为Django喜欢的格式。
https://github.com/migonzalvar/dj-email-url
DJ Database URL
(轻松配置数据库连接字符串)
该库类似于电子邮件库,除了它通过字符串配置数据库外。
https://github.com/jacobian/dj-database-url
Sentry SDK
尽管开发不需要,但我发现Sentry是立即检测应用程序中的错误的宝贵服务。 堆栈跟踪和上下文与崩溃信息一起发送。 我推荐它。
https://github.com/getsentry/sentry-python
Python Dotenv
这个小的库使开发时很容易将环境变量加载到您的应用程序中。 如果使用12因子模式进行构建,那么这将更有意义。 但是,这在生产中不使用,因为环境变量是在运行时传递的。
https://github.com/theskumar/python-dotenv
Django Bootstrap4
我很懒,所以我使用Bootstrap是因为它很自以为是,并且在涉及UI元素时会提供“缩水槽”。 该库是一组帮助程序函数和模板,使使用引导程序更容易(例如表单呈现)。
https://github.com/zostera/django-bootstrap4
Django Solo
该库为我们提供了数据库单例–一个简单的表,其中包含可在整个应用程序中使用的单个值。 我们放入settings.py中的内容有所不同,因为可以在运行时对其进行更改。 将其视为便宜且容易的功能标记.
https://github.com/lazybird/django-solo
可选,根据需要
以下库是我需要时使用的库。
Twilio
如果您需要发送短信或在应用中进行视频聊天,这是我的最佳选择。 Twilio很大,所以我只使用他们产品的一小部分。
https://www.twilio.com
Django懒惰注册
该库将允许匿名用户创建帐户而无需提供任何信息。 如果要构建SaaS,这就像“即时试用”。 如果他们进行转换,则可以填写必填字段以成为完整用户。 您可以在Curabase上看到它的实际效果。
https://github.com/danfairs/django-lazysignup
Django Rest框架
最后,我们有Django Rest Framework(DRF)。 这个令人难以置信的深度,精心设计和详尽记录的库可轻松为您的应用程序添加完整的REST API。
https://www.django-rest-framework.org/
逃脱未来的阴影
您永远不会知道将来需要什么,这就是Django的“包含电池”功能的亮点:
- 用于执行更多异步或长期运行任务的Django命令。 我用它来抓取网页,截取屏幕截图,向数以千计的用户发送SMS /电子邮件。
Websockets的Django频道
GraphQL的插件
快取
翻译
清单继续。 我不会感到奇怪,但是您明白了。
结论
Django本身是启动几乎所有Web项目的不错选择。 当与一些额外的库和深度生态系统结合使用时,与其他框架相比,它成为无与伦比的堆栈。
原文:https://www.simplecto.com/django-my-go-to-application-framework-2020/