cle*_*leg 50 python django variables function django-templates
我正在向Django的模板传递一个函数,它返回一些记录.我想调用这个函数并迭代它的结果.
{% for item in my_func(10) %}
Run Code Online (Sandbox Code Playgroud)
这不起作用.我试图将函数的返回值设置为变量并迭代变量,但似乎无法在Django模板中设置变量.
有没有正常的方法呢?
she*_*pya 19
如果你有一个对象,你可以定义它,@property这样你就可以在没有调用的情况下得到结果,例如
class Item:
@property
def results(self):
return something
Run Code Online (Sandbox Code Playgroud)
然后在模板中:
<% for result in item.results %>
...
<% endfor %>
Run Code Online (Sandbox Code Playgroud)
dol*_*a33 10
我正在向Django的模板传递一个函数,它会返回一些记录
为什么不向Django模板传递变量存储函数的返回值,而不是函数?
我试图将函数的返回值设置为变量并迭代变量,但似乎没有办法在Django模板中设置变量.
您应该在Django视图中设置变量而不是模板,然后将它们传递给模板.
根据设计,Django模板无法调用任意Python代码。这是设计人员在其中编写模板的环境中的一项安全保护功能,它还可以防止业务逻辑迁移到模板中。
如果要执行此操作,可以切换到使用Jinja2模板(http://jinja.pocoo.org/docs/),或使用您喜欢的任何其他支持此功能的模板系统。django的其他任何部分都不会受到您使用的模板的影响,因为这是有意的单向过程。如果需要,您甚至可以在同一项目中使用许多不同的模板系统。