如何在django模板中设置变量(使用set标签)?

时间:2017-10-08 15:53:25

标签: javascript python django django-templates

我想在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”?你的回答对我有帮助。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

案例1:

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

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

案例2:

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

<input type="hidden" id="my-data-table" data-table="{{ titles }}">

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

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

相关问题