【问题标题】:Django execute block tag inside 'if' statement in template only if 'if' statement is true仅当“if”语句为真时,Django 才在模板中的“if”语句中执行块标记
【发布时间】:2014-11-15 07:25:00
【问题描述】:

我只想在 if 语句为真时执行块标记。这就是我的意思。这是我的模板:

{% extends "homePageBase.html" %}

{% if not blogPage %}
    {% block isBlogFalse %} notBlogPage {% endblock %}
{% else %}
    {% block isBlogTrue %} blogPage {% endblock %}
{% endif %}

但是两个块标签都被执行了。如果 if / else 语句为真,是否有任何方法让块标签仅被执行?有什么办法可以解决这个问题或完成这个任务?

【问题讨论】:

  • 你确定两个块标签都被执行了吗?我认为不应该
  • @eagertoLearn 两个标签都会被执行,正如这篇文章中解释的那样:stackoverflow.com/questions/15434017/…
  • 如果你交换东西并执行“if blogPage”而不是“if not blogPage”会发生什么?
  • @souldeux 同样的事情,我认为即使在 if 和 else 语句被读取之前,两个块标签都会被执行。

标签: django django-templates


【解决方案1】:

可以在https://stackoverflow.com/a/18638131/573392 找到问题的答案。要根据您的情况对其进行修改,它看起来像:

{% extends blogPage|yesno:"blogPage.html,notBlogPage.html" %}

此解决方案将允许您加载依赖于 blogPage 变量的模板,从而有效地实现 if 语句的结果。

【讨论】:

  • 对,我知道这一点。但是,我想知道是否有任何方法可以解决它?有什么方法可以实现吗?
  • 嗯,我不确定该解决方案如何解决此问题。如果你能解释一下,有可能吗?因为您链接的帖子上的解决方案涉及从不同的网页扩展。这如何解决我目前遇到的问题?
  • 我刚刚阅读了您的更新。如果'if'语句为真,我正在寻找的是修改一个块。如果“if”语句为假,那么我想修改一个不同的块。如果“if”语句为真/假,您提供的解决方案基本上扩展了一个模板。无论“if”语句的计算结果如何,我都不想扩展任何模板,我想根据“if”语句的计算结果修改块标签。你明白我的意思吗?
猜你喜欢
  • 1970-01-01
  • 2013-10-17
  • 2014-01-07
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-19
相关资源
最近更新 更多