在django视图中迭代

问题描述 投票:0回答:1

在django views.py文件中,我遇到了一个问题,就是列表中的所有内容都会被迭代。

from django.shortcuts import render, redirect, HttpResponse
from django.views.decorators.http import condition
import time
import roundrobin


STATES = [
    "hello",
    "world"
]

get_roundrobin = roundrobin.basic(STATES)

def test(request):
    for i in get_roundrobin():
        return HttpResponse(i)

Django只回答了states列表中每个元素的第一个符号,我的意思是django返回 "h "然后是 "w",而不是 "hello "然后是 "world",如何解决这个问题?

更新。对了,在roundrobin库里面,有下一段代码。

from itertools import cycle


def basic(dataset):
    iterator = cycle(dataset)

    def get_next():
        a = next(iterator)
        print(a)
        return a

    return get_next

所有的代码都是正确的,它的答案是 "hello "然后是 "world"。

python django
1个回答
1
投票

因为 get_roundrobin 返回一个字符串,然后你会在一个列表中迭代,每次只返回第一个字符,试试这个。

from django.shortcuts import render, redirect, HttpResponse
from django.views.decorators.http import condition
import time
import roundrobin


STATES = [
    "hello",
    "world"
]

get_roundrobin = roundrobin.basic(STATES)

def test(request):
    return HttpResponse(get_roundrobin())

现在测试将返回 'hello' 然后 'world' 然后 'hello' 诸如此类

© www.soinside.com 2019 - 2024. All rights reserved.