Skip to main content
 首页 » 编程设计

python之Django 模板和 DRY之如何避免重复的 HTML

2024年08月27日30lori

最近开始使用Django模板,经常在别人的代码中发现如下模式:

  {% ifequal value 1 %} 
      <input type="checkbox" name="{{ item.name }}" id="{{ item.name }}" checked="checked" /> 
  {% else %} 
      <input type="checkbox" name="{{ item.name }}" id="{{ item.name }}"  /> 

Django 模板变量的条件用于定义一个或多个 HTML 元素属性的值。这会复制 HTML 代码并破坏 DRY 原则。我怎样才能避免这种情况?

我考虑过的备选方案:

1) 在选中的属性中嵌入条件。

  • 专业版:符合 DRY 标准
  • 缺点:使代码更难阅读,特别是在条件更复杂并且操纵多个 HTML 元素属性的情况下

2) 使用模板变量值定义 Javascript 变量并使用 Javascript 生成 HTML 元素。

  • 专业版:符合 DRY 标准
  • 缺点:将逻辑移至客户端

欢迎提出建议。

请您参考如下方法:

我认为该片段没有任何问题。它可能会打破一些 DRY,但代码最终是非常可读和可维护的。

来自 Zen of Python 的两个核心理念是

Explicit is better than implicit

和

Readability counts

通过 JavaScript 生成 HTML 绝对不是显式的,而将条件放在元素中会影响可读性。