【问题标题】:How to set a variable (using set tag) in django template?如何在 django 模板中设置变量(使用 set 标签)?
【发布时间】:2018-03-19 20:56:33
【问题描述】:

我想要在 django 模板中这样的东西。我想在 javascript 文件或其他模板文件中使用这些变量。

   {% set titles = {
      'table': form._meta.model._meta.verbose_name_plural.title(),
      'form': form._meta.model._meta.verbose_name.title()
       }
   %}

   {% set dtable = "dt_" + page %}

如何在 django 模板中创建“set tag”?你的回答会对我有帮助。

【问题讨论】:

    标签: javascript python django django-templates


    【解决方案1】:

    虽然我认为这通常是可以避免的(在 django 中通常建议不要混合模板和逻辑),但似乎可以通过使用 with 标签来实现。

    {% with name="World" greeting="Hello" %}     
    <html>
    <div>{{ greeting }} {{name}}!</div>
    </html>
    {% endwith %}
    

    在 javascript 中,它可能看起来像这样

    $(document).ready(function(){ 
       {% with greeting="hello" %}
          var text = '{{ greeting }}'
       {% endwith %}
    

    });

    有一些限制,我不相信你可以这样设置元组或字典。也就是说,如果您尝试使用 {% with ... %} 设置更复杂的类型,则可能应该在视图中处理该逻辑。

    Referenced from this SO question.

    【讨论】:

    • 谢谢。但是有没有自定义的方式来使用“set tag”呢?
    • 我不明白你的问题。这和“设置标签”有什么区别?另外,如果要在逻辑中使用标签,为什么要在模板中而不是在视图中设置标签?如果您尝试在许多页面中使用模板标记,则应使用上下文处理器。我不认为你可以在模板中创建一个标签并在没有一些非常非 djangoistic 的 javascript 胶水的情况下扩散到许多页面。
    【解决方案2】:

    案例 1:

    如果您想在 HTML 模板中访问您的字典。您可以将titles 字典传递给模板,并通过点 (.) 运算符访问字典的任何键。

    <div class="something1">{{ titles.table }}</div> <div class="something2">{{ titles.form }}</div>

    案例 2:

    如果您想将字典发送到 HTML 模板并在您的 javascript 文件中访问,我建议您将它们存储在输入(隐藏)元素或任何元素的数据属性中,然后通过 javascript 访问。

    &lt;input type="hidden" id="my-data-table" data-table="{{ titles }}"&gt;

    您可以像这样在您的 javascript 文件中访问字典,

    var myTitles = document.getElementById("my-data-table"); var titles = myTitles.getAttribute("data-table");

    【讨论】:

    • 谢谢。但是,你没有得到我的问题。我想知道如何在 django 模板中创建 set 标签。
    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多