【问题标题】:How to declare variables inside Django templates如何在 Django 模板中声明变量
【发布时间】:2016-04-15 02:00:27
【问题描述】:

如何在 Django 1.8 模板中声明一个变量,例如:

{% my_var = "My String" %}

这样我就可以像这样访问它:

<h1>{% trans my_var %}</h1>

编辑:

为了证明我的目的,这是我的代码:

{% my_var = "String Text" %}

{% block meta_title %}{% trans my_var %}{% endblock %}

{% block breadcrumb_menu %}
{{ block.super }}
<li>{% trans my_var %}</li>
{% endblock %}

{% block main %}

<h1>{% trans my_var %}</h1>

【问题讨论】:

  • 更好的是......你想先用它做什么?一些模板标签可以分配给一个变量,但这取决于你在做什么
  • @Sayse 我试图避免 DRY。有没有更好的办法?我在上面添加了更多源代码。
  • 为什么不能从视图中传递这个字符串?

标签: django


【解决方案1】:

您可以将翻译分配给您可以在整个过程中使用的变量。

 {% trans "my string" as my_var %}
 {{ my_var }}   {# You can use my_var throughout now #}

Documentation for trans tag


您的代码 sn-p 的完整示例

{% trans "String text" as my_var %}

{% block meta_title %}{{ my_var }}{% endblock %}

{% block breadcrumb_menu %}
{{ block.super }}
<li>{{ my_var }}</li>
{% endblock %}

{% block main %}

<h1>{{ my_var }}</h1>

【讨论】:

  • 谢谢赛斯!出于某种原因,这不起作用。我必须专门加载任何东西吗?在我的代码中添加其他内容?我现在已经加载了这个:{% load i18n mezzanine_tags %}
  • @Y7da - “没有工作”是什么意思?有什么错误吗?除了 django trans 标签所需的东西之外,没有什么额外的东西了,我不知道夹层会有什么影响
  • 完全没有输出。屏幕上只是空白,标题中没有任何内容。
  • @Y7da - 你确定你确实使用了我的例子中显示的标签吗?您可以在我提供的链接中使用与上述相同的文档来查看文档
  • 100% 确定。看了文档,一切都是正确的。我会调查我使用的 Mezzanine 是否存在问题。
【解决方案2】:

尝试使用 with 标签。

{% with my_var="my string" %}
{% endwith %}

另一个答案更适合您尝试做的事情,但这对于更一般的情况更好。

那些仅仅从问题标题来到这里的人将需要这个。

【讨论】:

【解决方案3】:

我喜欢使用的一种方式是:

{% firstof "variable contents" as variable %}

然后,您可以将其用作{{variable}},而无需嵌套with 块,即使您定义了多个变量。

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2019-08-07
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2018-08-04
    • 2020-05-10
    • 2016-11-29
    • 2020-06-02
    相关资源
    最近更新 更多