Django 已经是并将继续成为最流行的 Python Web 应用框架。
该框架不断发展和演变,它拥有大量的模块和库,不仅可以与 Django 良好兼容,而且对于构建当今的应用程序至关重要。
以下是我挑选的一些库。我认为这些库不仅是很棒的选择,而且在着眼于未来发展项目时,它们也是最佳选择。
大量的机密信息和设置不应该放在 settings.py 文件中。当然,你可以使用 os 模块从环境变量中获取它们。这通常是部署到特定类型的云服务时的情况。然而,Dotenv 仍然提供了在每台服务器上设置变量的最简单方法,而不是在设置文件中设置。它非常简便,而且通常比其他选项更灵活。
对我来说,这是我安装的第一个库,因此无论部署什么或在哪里部署,我的设置文件从一开始就是安全的。
我使用 DRF 多年,但第一次见到 Django Ninja 时就彻底爱上了它。
这个库旨在将 FastAPI 的一些最佳功能引入 Django 世界,同时它本身也是一个 API 框架。包括依赖注入、自定义身份验证、数据验证等等,都包含在这个库中。API 的创建非常精简快捷。它与 ORM 接口,但本身几乎是独立的。
这一点本身就让我更加喜欢它。需要注意的是,Django Ninja 非常偏向 FastAPI 风格,而不是 Django 风格。
虽然学习起来有些费劲,但绝对值得。
Pydantic 扩展了 Python 数据类的概念,它遵循了 Python 的思路,而不是 Django 的思路。它允许对表单数据进行多层验证,既可以在默认级别使用 Python 类型,也可以通过添加自定义验证例程来实现。
对我来说,Django Forms 是过去时,而 Pydantic 则是未来。创建一个包装类也很容易,你可以在其中声明用于验证的 Pydantic 模型以及表单数据。
我刚开始使用 Django 时,AllAuth 是首选,但我觉得它有点过时了。
Python Social Auth 自带 Django 集成模块,设置起来非常简单。它没有预定义的模板或表单需要重载,所以你可以使用易于引用的 URL 引用来创建自己的模板或表单。它并不能完成所有电子邮件验证等功能,但我是 KISS 类型的人,如果需要这些功能,我会添加进去。其实操作起来并不难。
用Pika处理RabbitMQ
要彻底放弃 Celery,现在就放弃它。
用 Pika 或 aio-pika 来使用 RabbitMQ 非常简单,然后你会质疑 Celery 为什么要花这么多时间去设置。
我只想说,Celery 是按照 Django 的方式运行的,而 Pika 是按照 Python 的方式运行的。Pika的Python 的方式提供了大量的额外选项,而且简单到你会意想不到。
那么,为什么我的清单里要列一个 JS 库呢?
因为 HTMX 和 Django 才是真正的未来。它让你无需庞大的前端框架和两个完全不同的环境就能构建响应式前端。而且它操作起来超级简单。HTMX 真的感觉像是 Django 的一部分,它完全可以融入你的项目。
它改变了模板的设计方式,并增加了许多选项,你会惊叹没有它,你不知道如何生存。
这是对你的项目的另一个小补充,但你会发现它非常有用,尤其是在使用 HTMX 时。基本上,你可以将多个模板放入同一个文件中,并将它们标记为带有引用的局部模板。然后,当渲染模板时,你可以使用 #. 'my_template.html#my_partial1' 进行引用。
这大大减少了您可能到处都有的小的碎片式 html 文件的数量。
前端程序员总是喜欢谈论组件,而 Cotton 是从 Django 而不是前端实现组件的最简单易用的方法。
还有其他一些选项提供了类似 Jinja2 Macro 的功能,但 Cotton 的功能远不止于此,它允许正确嵌入组件,从而提升 HTML 的可读性。它也非常易于使用,组件会自动注册,无需在 HTML 中进行任何加载。它使用 HTML 标签,而不是大多数 Django 标签的 {%%} 格式。
最后说一句,我在一个使用 HTMX 的项目中确实开始使用大量自定义标签,发现这改变了我编写模板的方式。Cotton 更上一层楼,简化了一切,同时让 HTML 看起来更简洁。
Faker库
大多数 Django 程序员都会使用加载 Factory-boy 来创建测试数据,但随着持续使用,我发现 Python Faker 库本身就非常有用。
这是因为我不想让我的模块与 Django 框架和 ORM 紧密结合,从而获得更大的灵活性。除了单元测试之外,Faker 还有很多其他用途。别误会,如果你想要 Factory-boy,那就去吧,反正你也会用到 Faker,只是我自己用的是 Faker 而不是 Factory-boy。
这个选项,这完全取决于个人选择。Systemd目前不能运行在标准的 Docker 容器内,但在其他容器内,它现在运行地已经很棒了。
Python 的日志系统也很棒,所以我不是说要把它全部抛弃,但使用Systemd 进行日志记录,会为你的日志数据增加一个全新的维度。关键在于为每条消息添加各种额外的参数或字段。
最重要的是,你可以比通过“os”发出的命令更轻松地检查其他的进程。
最后一点是,Python Systemd 还允许我们使用完整的 journalctl 命令集读取日志。因此这是一种在应用程序内部显示日志消息的良好方法。
我是特别喜欢 Django框架的,但它的一些功能已经过时了,需要更新换代。
我这里推荐的库并非最“Django 式”的,而是更偏向 Python 样式。我认为它们能为 Django 注入新的活力,让我们的 Django 项目更上一层楼。
而且这些库还会占用 React FE/Django BE 堆栈,这些库必须被淘汰。
大家一起使用新的库哦!~
作者:场长
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。