Django是2020年我的首选应用程序框架

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/