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

标签 python django django-templates

我最近开始使用 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/

相关文章:

python - 用于过滤和检查该模型中是否存在相关数据的 Django 模板语法/标签

python - django-rosetta 翻译的短语没有出现在页面上

django - Jinja2 与带有缓存加载器的 django 模板 - 性能比较如何?

python - 事件驱动回测引擎速度

Python 类方法无法识别输入

python - TextBlob 朴素贝叶斯。选择最高可能性

python - 属性错误 : 'module' object has no attribute 'F_GETFD' - Windows 7

python - 渲染抛出错误 AttributeError META -(异常位置 : __getattr__ in urllib2)

python - 创建 super 用户时出现 Django 错误,AttributeError : 'Manager' object has no attribute 'get_by_natural_key'

python - Django REST Framework 中除 AUTH_USER_MODEL 之外的用户模型