Django渲染没有回报?

时间:2018-10-02 08:33:23

标签: django return render

在我的视图函数中有for循环的情况。而且我需要为每次迭代计算一些东西并渲染内容。但是需要返回render,这就是为什么只进行一次迭代然后我的视图函数结束的原因。有什么办法可以绕过这个吗?谢谢您的回复。这就是我想象的样子。

for i in iterations:
    ...
    context = i.name
    render(request, template, {context: context})
return render(request, template, {context: context})

1 个答案:

答案 0 :(得分:1)

在您的循环中,您将覆盖HTTP响应以及上下文,因此无论如何将无法正常工作。循环应创建一些数组或列表。

names = []
for i in iterations:
    ...
    names.append(i.name)

return render(request, template, {'names': names})

并在您的模板中:

{% for name in names%} {{ name }} {% endfor %}

如果您确实要先渲染它(例如,如果您想添加一些html代码段),则可以使用render_to_string

rendered_str = []
for i in iterations:
    ...
    rendered_str.append(render_to_string('my_snippet.html', {'name': i.name}))