如何调用在Django模板中引用参数的函数?

我传递给Django的模板一个函数,它返回一些logging。 我想调用这个函数并迭代它的结果。

{% for item in my_func(10) %} 

这是行不通的。 我试图将函数的返回值设置为一个variables,并迭代variables,但似乎没有办法在Django模板中设置variables。

有没有正常的方法来做到这一点?

您不能调用模板中需要参数的函数。 编写一个模板标记或filter。

如果你有一个对象,你可以定义它为@property所以你可以得到的结果没有一个电话,例如

 class Item: @property def results(self): return something 

然后在模板中:

 <% for result in item.results %> ... <% endfor %> 

我传递给Django的模板一个函数,它返回一些logging

为什么不传递给Django模板的variables存储函数的返回值,而不是函数?

我试图设置function的返回值的variables和迭代variables,但似乎没有办法在Django模板中设置variables。

您应该在Django视图中设置variables而不是模板,然后将它们传递给模板。

按照devise,Django模板不能调用任意的Python代码。 这是devise人员编写模板的环境的安全和安全function,同时也防止业务逻辑迁移到模板中。

如果你想这样做,你可以切换到使用Jinja2模板( http://jinja.pocoo.org/docs/ ),或者任何你喜欢的模板系统。 django的其他部分不会受到您使用的模板的影响,因为它是故意单向的过程。 如果你愿意,甚至可以在同一个项目中使用许多不同的模板系统。

你可以做的是,创build“function”作为另一个模板文件,然后包括该文件传递给它的参数。

在index.html里面

 <h3> Latest Songs </h3> {% include "song_player_list.html" with songs=latest_songs %} 

在song_player_list.html里面

 <ul> {% for song in songs %} <li> <div id='songtile'> <a href='/songs/download/{{song.id}}/'><i class='fa fa-cloud-download'></i>&nbsp;Download</a> </div> </li> {% endfor %} </ul>