如何将 Django forms.ChoiceField 渲染为 Twitter Bootstrap 下拉列表

2024-01-04

使用 django-bootstrap、django-bootstrap-form、django-bootstrap-toolkit、django 之一呈现 Django forms.ChoiceField 作为 Twitter Bootstrap 下拉列表的最有效方法是什么(在编程/维护工作、优雅方面) -crispy-forms 等应用程序?这些应用程序中是否明确支持此用例?


免责声明我是首席开发人员django-crispy-forms(提到的应用程序之一) https://github.com/maraujop/django-crispy-forms/.

我将尝试解释如何使用 django-crispy-forms 来做到这一点。您只需在模板中执行以下操作:

{% load crispy_forms_tags %}
{{ form|crispy }}

您可以在以下位置看到此内容以及更多内容django-crispy-forms 文档 http://django-crispy-forms.readthedocs.org/en/d-0/index.html。您的 ChoiceField 将根据您的需要呈现为 Bootstrap 下拉列表。

与 django-bootstrap 相比

首先,了解一点历史。 django-bootstrap 诞生于 django-uni-form(django-crispy-forms 的父项目)之后。当时,django-uni-form 已经在做 Boostrap 表单,但可能不是最好的方式(Bootstrap 是通过使用附加的 contrib 应用程序来支持的)。因此,django-bootstrap 的作者可能决定自己开发。

现在,关于 Bootstrap 支持。 django-bootstrap 也可以渲染表单,但是它不使用 Django 过滤器,而是更改表单的基类。因此 django-crispy-forms 影响你的模板,而 django-bootstrap 影响你的 Python 代码。

此外,django-crispy-forms 和 django-bootstrap 都可以让你进行布局。在 django-bootstrap 中,布局位于表单内的 Meta 类中,而在 django-crispy-forms 中,布局位于表单的子类中FormHelper,这给你解耦。

django-bootstrap 使用元组来定义布局,而 Crispy-forms 使用的子类Layout。这增加了重用布局、轻松组合布局等的可能性。请注意,虽然 crispy 的封装内部仍然有一个字段列表,但它添加了一个有用且人性化的 API 来以编程方式操作布局,我认为强制执行了良好的解耦模式。

据我所知,脆皮形式的布局更强大。它具有更大的布局对象集合,例如,已经支持前置文本、附加文本、日期范围等,而在 django-boostrap 中,这些对象位于 TODO 列表中。

Crispy-forms 还有一个 API,用于随时修改布局并进行一些硬核编程布局构建,这非常好。

Cripy-forms 还支持各种格式集。它支持不同的CSS模板包,这意味着如果将来新的踢CSS包被命名为“巧克力”,那么为其创建新的模板包将非常容易,并且您的所有表单都将能够使用“巧克力'无需更改代码,只需一个简单的设置变量。

脆皮形式也有属性 http://django-crispy-forms.readthedocs.org/en/d-0/tags.html#helper-attributes-you-can-set你可以设置FormHelper定义了您可以轻松打开和关闭的额外功能。如果需要,您还可以创建自己的自定义属性。

最后,django-crispy-forms(与 django-uni-form 一起)拥有超过 67.000 次下载,这对于 Django 应用程序来说相当不错。该项目在 Github 上有近 500 名关注者、几个大用户、良好的测试覆盖率和多年的历史,并且仍在积极维护。

与 django-bootstrap-form 相比

据我所知 django-bootstrap-form 只是一个用于使用 Bootstrap 渲染表单的过滤器。这是 django-crispy-form 所涵盖的内容,同时提供了更多、更多的功能。该项目于 2012 年 8 月 21 日发布,在我看来它像是在重新发明轮子,因为其他几个应用程序已经涵盖了这个用例。

与 django-bootstrap-toolkit 相比

它的灵感来自 django-boostrap-form。从我在文档中看到的,它还为您提供了一个用于使用 Bootstrap 渲染表单的过滤器。它显然涵盖了比表单更多的 Bootstrap 内容,但我在其文档中找不到更多信息。上次提交是 2 个月前。


我会坚持认为,我显然不是进行无偏见比较的合适人选。这就是为什么我以前从未写过这个问题。我本来可以多次发表有关此问题的博客文章,但我总是驳回这个想法。然而,随着表单应用程序(和引导支持应用程序)的碎片化不断增加,我认为这可能是写下我的想法的好时机。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Django forms.ChoiceField 渲染为 Twitter Bootstrap 下拉列表 的相关文章

随机推荐

  • 如何在android xml中构建梯形形状?

    我想建立这个shape with bottom line and text在里面我有点困惑如何实现这个我累了 一些代码但没有得到所需的东西 到目前为止我已经尝试过这段代码 形状 xml
  • 以编程方式更改 Windows XP 中的默认代码页? (来自德尔福)

    谁能建议如何以编程方式更改默认的 Windows XP 代码页 我是在 Delphi 中执行此操作 这相当于进入控制面板 gt 区域设置 gt 非 Unicode 应用程序的语言 在这种情况下 我想切换到中文 中国 因此正在写入以下注册表字
  • HTML5 视频 - iPhone 上的当前时间设置不正确

    我设置了一个基本的 HTML5 视频 从中加载四个视频之一 我遇到的问题是 当我加载下一个视频时 它会从上一个时间位置继续播放 努力设定currentTime财产似乎要么是短暂的 要么是完全被忽视的 我已将侦听器添加到事件集合中 并且每个事
  • 将多个滤色器应用于同一个可绘制对象

    我想将多个滤色器串联应用到可绘制对象 那可能吗 或者也许创建一个过滤器 它是我想要应用的过滤器的组合 例如 我想要 Drawable d d setColorFilter 0x3F000000 Mode OVERLAY setColorFi
  • strlen 和 malloc:C 内存泄漏

    这个问题是无效的 我没有正确地释放学生 我会尽快接受向我透露这一点的答案 我是 C 新手 正在练习 malloc 从宏观上讲 我正在编写一个链表库 这个 create student 函数是我将用来测试我的链表库的许多函数之一 问题是 我运
  • 如何动态查看PL/SQL中变量的类型?

    此链接显示如何在 Oracle 中获取过程 函数变量的类型 查看变量的类型 https stackoverflow com questions 17134293 how to view the type of a variable in p
  • 为什么在大多数编程语言中数组索引都是从零开始的?

    C C C D Java 都是从零开始的 Matlab 是我所知道的唯一从 1 开始的语言 在 C 和 C 中 数组是从零开始的 因为它表示距项目列表开头的偏移量 这两行在 c 中具有相同的结果 anArray 3 4 anArray 3
  • NameError——当脚本分解为多个 python 文件时导入的模块

    很难找到这个问题的标题 希望这个线程不是重复的 我正在为一个项目使用 Python 2 7 使用 PyCharm 2016 2 2 编写这么长的脚本 并决定将其拆分为不同的 py 文件 然后我可以将其导入到主文件中 不幸的是 似乎在代码中较
  • 通知徽章在 Android O 中不起作用

    在 Android O 开发者预览版中 谷歌引入了通知徽章 这些徽章应该显示在启动器图标上 我正在使用来自开发通道的 Android O 模拟器 我编写了一个简单的代码来显示通知徽章 但它似乎不起作用 Notification notifi
  • C++ 文本文件读取

    所以我需要一点帮助 我目前有一个文本文件 其中包含以下数据 myfile txt b801000000 我想做的是将 b801 等数据读取为位 这样我就可以获取值 0xb8 0x01 0x00 0x00 0x00 目前我正在使用以下 typ
  • 从 pug 读取环境变量

    我正在使用 pug 编译静态 html 我自己的静态站点生成器 有点 除了 package json 文件中的这一行之外 我没有 node js 服务器代码 watch pages pug O options json w pages ou
  • 在 DaemonSet 中处理 PersistentVolumeClaim

    我有一个DaemonSet创建 flink 任务管理器 Pod 每个节点一个 Nodes 假设我有两个节点 node A node B Pods daemonSet 将创建 节点 A 上的 pod A 节点 B 上的 pod B 持久数量声
  • Access 数据库错误“找不到文件”?

    我已经使用 Access 数据库作为选择数据库很长时间了 这是我第一次遇到以下错误消息 Could not find file C Program Files Common Files Microsoft Shared DevServer
  • 在azure APIM中为同一功能应用程序创建2个不同的端点

    我有单个天蓝色功能应用程序 我想在 Azure APIM 中创建 2 个不同的 API 端点 我怎样才能做到这一点 According to some test it seems we can t implement the require
  • ByteBuddy:新定义的字段通过反射不可见

    我在代理中使用 ByteBuddy 向测试程序中的每个 Runnable 添加跟踪变量 new AgentBuilder Default with AgentBuilder LambdaInstrumentationStrategy ENA
  • 如何使用 Ruby 或 Nokogiri 获取页面的原始 HTML 源代码?

    我在用着Nokogiri http nokogiri org Ruby Xpath 库 用于 grep 网页上的内容 然后我发现一些网页有问题 比如Ajax网页 这意味着当我查看源代码时 我不会看到确切的内容 比如 table etc 如何
  • pandas:无法从重复轴重新索引

    我有这个代码 missing columns list set model header set combined data columns if missing columns combined data combined data re
  • iOS 10 中 UIWebView 顶部的灰色条

    当我从 Xcode 中的对象库拖动 UIWebView 时 我得到一个顶部带有深灰色条的 UIWebView 那是什么 我怎样才能摆脱它 你需要把self automaticallyAdjustsScrollViewInsets NO 在V
  • 嵌套 ViewModel 的验证

    我有两个 ViewModel 简化 public class ParentViewModel public ParentViewModel Content new ChildViewModel public ChildViewModel C
  • 如何将 Django forms.ChoiceField 渲染为 Twitter Bootstrap 下拉列表

    使用 django bootstrap django bootstrap form django bootstrap toolkit django 之一呈现 Django forms ChoiceField 作为 Twitter Boots