Джанго рендер без возврата? - PullRequest
0 голосов
/ 02 октября 2018

У меня есть ситуация, когда у меня есть цикл внутри моей функции просмотра.И мне нужно что-то вычислить и визуализировать контент для каждой итерации.Но рендер должен быть возвращен, и поэтому он делает только одну итерацию, и тогда моя функция просмотра заканчивается.Есть ли способ как это обойти?Спасибо за ответ.Вот как я представляю, как это должно быть.

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

1 Ответ

0 голосов
/ 02 октября 2018

в вашем цикле вы перезаписываете 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}))
...