没有 return 的 Django 渲染?

Django render without return?

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

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

在您的循环中,您将覆盖 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}))