Как выполнить перенаправление на страницу несколько раз и обновить информацию на странице с django - PullRequest
0 голосов
/ 18 июня 2020

Я работаю над веб-приложением. В веб-приложении есть представление, в котором a for l oop запускается и обновляет три списка с каждой итерацией. Длины списков хранятся в словаре. Я хочу отображать длину списков в шаблоне после каждой итерации. Как мне это сделать? Вот мой код

views.py

def update_lst(request):
   if request.method == 'POST':
       lst1, lst2, lst3 = [], [], []

       for i in range(10):
           lst1.append(i+1)
           lst2.append(i+2)
           lst3.append(i+3)

           context = {'length1':len(lst1), 'length2':len(lst2), 'length3':len(lst3)}
           render(request, 'details.html', context)

        return redirect('index.html')

    return render(request, 'index.html')

подробности. html

<h1>Extracting details</h1>
<p>{{length1}}: length of list1</p>
<p>{{length2}}: length of list2</p>
<p>{{length3}}: length of list3</p>

Сейчас функция рендеринга внутри for l oop не выполняется. Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Две вещи, на мой взгляд, являются проблемой. Во-первых, вам не хватает ключевого слова return перед оператором render. Во-вторых, ваш отступ отключен. Попробуйте это:

def update_lst(request):
   if request.method == 'POST':
       lst1, lst2, lst3 = [], [], []

       for i in range(10):
           lst1.append(i+1)
           lst2.append(i+2)
           lst3.append(i+3)

       context = {'length1':len(lst1), 'length2':len(lst2), 'length3':len(lst3)}

       # you code is missing this "return" keyword here
       return render(request, 'details.html', context)

    return redirect('index.html')
0 голосов
/ 18 июня 2020

Вставьте context в return

return redirect('index.html', context)

Ваш код return index.html без context

...