如何调用在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> Download</a> </div> </li> {% endfor %} </ul>