2017-10-08 133 views
0

我想要这样的Django模板内。我想在JavaScript文件或其他模板文件中使用这些变量。如何在django模板中设置变量(使用set标签)?

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

回答

0

虽然我认为这通常是要避免(混合模板&逻辑一般是在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.

+0

谢谢。但是有没有使用“设置标签”的定制方式? –

+0

我不明白你的问题。这和“set tag”之间有什么区别?另外,如果要在逻辑中使用标签,您为什么要在模板中设置标签而不是在视图中?如果你想通过很多页面使用模板标签,你应该使用上下文处理器。我不认为你可以在模板中创建一个标签,并且扩展到许多页面,而不需要一些非Djangoistic的javascript粘合。 – rob

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");

+0

谢谢。但是,你没有得到我的问题。我想知道如何在django模板中创建集标签。 –