Django 模板中的条件 link
Conditional link in Django templates
是否有以下 Django 模板代码的 DRY shorthand?
{% if condition %}
<a href="{% url 'url_name' arg1 arg2 kwarg='some value' %}">
{# just some block of code #}
<h2>{{ value|capfirst }}</h2>
</a>
{% else %}
{# the same block of code #}
<h2>{{ value|capfirst }}</h2>
{% endif %}
如果您需要保留 HTML 结构,这可能是最易读的方式。
{% if condition %}
<a href="{% url 'url_name' arg1 arg2 kwarg='some value' %}">
{% endif %}
<h2>Heading</h2>
{% if condition %}
</a>
{% endif %}
就个人而言,我没有在您的代码中看到任何非 DRY 内容(在我看来,可读性胜过 DRY)。
但是,如果必须,您可以创建一个模板标记,根据 condition
变量的内容呈现您的链接。不过在您的标签中,您将拥有相同的 if 循环逻辑。它只会将代码从您的模板移动到标签。不过,我会警告不要这样做,因为它只是为了虚荣而增加了复杂性(在我看来)。另外,模板 tags/filters 很难调试。
您也可以决定在视图代码中构建链接,但同样,您将不得不编写相同类型的逻辑结构(if 语句)。
也许有人会建议使用 javascript 根据标志修改节点,但同样 - 简单性和可读性胜过一切。
请记住,您必须随时维护此代码。不过,作为 code golf exercise,这是一个不错的选择。
是否有以下 Django 模板代码的 DRY shorthand?
{% if condition %}
<a href="{% url 'url_name' arg1 arg2 kwarg='some value' %}">
{# just some block of code #}
<h2>{{ value|capfirst }}</h2>
</a>
{% else %}
{# the same block of code #}
<h2>{{ value|capfirst }}</h2>
{% endif %}
如果您需要保留 HTML 结构,这可能是最易读的方式。
{% if condition %}
<a href="{% url 'url_name' arg1 arg2 kwarg='some value' %}">
{% endif %}
<h2>Heading</h2>
{% if condition %}
</a>
{% endif %}
就个人而言,我没有在您的代码中看到任何非 DRY 内容(在我看来,可读性胜过 DRY)。
但是,如果必须,您可以创建一个模板标记,根据 condition
变量的内容呈现您的链接。不过在您的标签中,您将拥有相同的 if 循环逻辑。它只会将代码从您的模板移动到标签。不过,我会警告不要这样做,因为它只是为了虚荣而增加了复杂性(在我看来)。另外,模板 tags/filters 很难调试。
您也可以决定在视图代码中构建链接,但同样,您将不得不编写相同类型的逻辑结构(if 语句)。
也许有人会建议使用 javascript 根据标志修改节点,但同样 - 简单性和可读性胜过一切。
请记住,您必须随时维护此代码。不过,作为 code golf exercise,这是一个不错的选择。