【问题标题】:{% %} and {{ }} in DjangoDjango 中的 {% %} 和 {{ }}
【发布时间】:2016-04-10 02:25:41
【问题描述】:

我正在学习 Django,遇到了 2 组我以前从未见过的特殊字符。我可以猜到它们在示例中的用途,但不了解它们的范围。

他们是:

  • {% if registered %}
  • {{ user_form.as_p }}

我在上下文中添加了if registereduser_form.as_p。我只关心其中的{% %}{{ }} 部分。

  • 这些是仅在 Django 中使用还是在 Python 中也使用?
  • 各代表什么意思?
  • 还有其他类似的字符集吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    这些是出现在 django 模板中的特殊标记。您可以在文档中的django template language reference 处阅读有关语法的更多信息。

    {{ foo }} - 这是模板中的占位符,用于从视图传递给模板的变量 foo

    {% %} - 当文本被这些分隔符包围时,表示有一些特殊的功能或代码在运行,其结果将放在这里。当内部的文本不是从视图传递给模板,而是模板语言本身正在执行的函数或特性(如 for 循环或 if 条件)时,使用它。您可以创建自己的模板语言扩展,称为模板标签

    {{ foo|something }} - 这是您可能会遇到的另一种语法。 |something 是一个模板过滤器。它通常用于转换| 符号左侧项目的结果。例如{{ foo|title }}

    您可以阅读更多关于标签和过滤器的信息,在文档中称为template builtins

    这种语法并不是 django 独有的——Python 中的许多其他模板语言(以及 Python 之外的一些)都采用了类似的语法。

    Python 语言没有相同的语法,但它确实有string templates 的概念,这是模板引擎的一个非常简化的版本。

    【讨论】:

    • 模板内建链接的 URL 已过时,并且随着新版本 django 文档的发布将继续过时。截至 2022 年 1 月 10 日,链接为 docs.djangoproject.com/en/4.0/ref/templates/builtins 但如果这仍然不起作用,请将 4.0 替换为最新记录的 django 版本。
    【解决方案2】:

    它们用于.html 文件,也就是模板。 它们不是 python,它们是 Django's template engine 的一部分。

    您使用{% %} 表示句子,例如:iffor,或调用标签例如:loadstatic 等。

    您使用{{ }} 在模板中呈现变量。

    【讨论】:

      【解决方案3】:

      {% %} 和 {{ }} 是 Django 模板语言的一部分。它们用于将变量从视图传递到模板。 {% %} 基本上用于当您有表达式并称为标签时,而 {{ }} 用于简单地访问变量。

      更多信息,我建议看看:

      https://docs.djangoproject.com/en/1.9/ref/templates/language/#variables

      【讨论】:

        猜你喜欢
        • 2015-09-12
        • 2012-12-04
        • 1970-01-01
        • 1970-01-01
        • 2020-11-26
        • 2019-05-06
        • 2011-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多