如何在django模板中使用生成器方法?

时间:2015-11-10 14:43:07

标签: python django

我想在django模板中使用python生成器,是否可能?

例如,我有模型,它包含生成器对象,如下所示,

class TestMe(models.Model):
    @property
    def gen(self):
        yield 1
        yield 2

context [' gen'] = gen

然后在模板中,

  {{ gen }} # it should be print 1
  {{ gen }} # it should be print 2

不使用for循环

我试过这种方式,但它返回的python生成器不是1.任何人都对此有所了解。

3 个答案:

答案 0 :(得分:1)

生成器返回一个iterable,因此你可以遍历它。

在Python中:

for value in context.gen:
    print(value) 

或者在Django模板中:

{% for value in context.gen %}
{{ value }}
{% endfor %}

答案 1 :(得分:1)

在模板中

{{ gen.next }}
{{ gen.next }}

答案 2 :(得分:1)

我使用过自定义过滤器

{{ gen|dj_iter }}

在django模板中,我使用了过滤器

void main(string[] args) {

    if( args[1] == "-d" ) {

        namedPipe = createNamedPipe("mydaemon");
        startThread( doStuff );

        while( ReadCommandsFromNamedPipe( out command ) ) {
            ExecuteCommand( command );
        }
    }
    else {

        namedPipe = connectToExistingNamedPipe("mydaemon");
        if( namedPipe == null ) die("Daemon is not running");

        while( PromptUserForCommandFromStdIn( out cmd ) ) {
            sendCommandDownNamedPipe( cmd );
            readResponseFromNamedPipe();
        }
    }
}