django-crispy-forms:用代码定义 Django 表单布局

django-crispy-forms 是一个专注于 Django 表单渲染的开源项目,目前获得了 5,164 个 Star。

正文顶部截图

README区域截图

在 Django 开发中,表单是不可或缺的一部分。Django 本身提供了 as_tableas_ulas_p 等内置方法来渲染表单,但这些方法的输出结构固定,难以调整。如果项目对 HTML 结构有特定要求,开发者往往需要在模板中手写大量表单标签,这既重复又容易出错。

django-crispy-forms 的出现正是为了解决这个问题。它的核心理念是:用 Python 代码以编程方式构建表单布局,让开发者完全控制渲染出的 HTML 结构,同时避免在模板中直接书写 HTML。

这个项目支持 Django 5.2 及以上版本,要求 Python 3.10 或更高版本。它的设计遵循 Django 的惯用模式,不会破坏标准开发流程,因此可以和其他表单类应用配合使用。

django-crispy-forms 主要提供两个使用入口。

第一个是一个名为 |crispy 的模板 filter。把它附加到表单实例后面,就能渲染出一个基于 div 结构的优雅表单。它的用法和 Django 内置的表单渲染方法类似,学习成本低,适合快速上手。不过 filter 方式的输出格式是固定的,无法做深度定制。

第二个是一个名为 {% crispy %} 的模板 tag。这个标签允许你基于自定义布局配置来渲染表单。你可以在 Python 代码中定义字段的排列顺序、分组方式、标签文本和包装结构,然后由 tag 负责生成对应的 HTML。这种方式提供了很大的灵活性,适合需要精确控制表单外观的场景。

在样式适配方面,django-crispy-forms 内置了对多个前端框架的支持。目前涵盖 Bootstrap 的 2、3、4 版本,以及 Tailwind、Bulma 和 Foundation。你只需要修改 CRISPY_TEMPLATE_PACK 这一个配置项,就能在不同样式主题之间切换。如果项目有自己的设计规范,也可以参考官方文档创建自定义模板包,实现完全定制化的渲染效果。

这个项目的前身是 django-uni-form,由 Daniel Greenfeld 创建。自 0.8.0 版本起,Miguel Araujo 接手主导开发,并在后续将其重命名为 django-crispy-forms,以更准确地表达项目的用途和目标。

从实际应用角度来看,django-crispy-forms 的定位很清晰:它在 Django 表单系统的基础上增加了一层布局控制,和内置的表单机制协同工作。对于那些表单数量多、布局要求复杂、又希望保持模板简洁的项目来说,这个工具可以减少大量重复劳动。

安装过程简单直接,通过 pip 命令即可完成。项目文档托管在 ReadTheDocs 上,覆盖了从入门到高级定制的各个方面。代码仓库中还包含示例,展示了各种布局配置的最终渲染效果。

整体而言,django-crispy-forms 在 Django 生态中填补了一个实际存在的空白。它让表单布局从模板中的 HTML 碎片变成了可维护的 Python 代码,这个转变对长期维护项目是有价值的。

的 Python 代码,这个转变对长期维护项目是有价值的。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐