我最近开始使用 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 绝对不是显式的,而在元素内放置条件会影响可读性。
关于python - Django 模板和 DRY - 如何避免重复的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842197/