最近开始使用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 绝对不是显式的,而将条件放在元素中会影响可读性。
