Я использую две сессии между представлениями. Либо этот сеанс с соответствующим им ['ключом'], имеет значение пустого списка или список со значениями.
Как вы можете заметить в коде, ключ сеанса запроса всегда существует, потому что он был установлен со списком, либо пустым, либо нет. Проблема в том, что, хотя список имеет значения, он ведет себя так, как будто он пустой. Он всегда идет с блоком else в шаблоне второго представления.
Вид 1: инициализация списка и настройка сеансов
def apply_fees(request):
included = []
excluded = []
if request.POST:
form = applyfees_form(request.POST)
if request.POST.get('applyBtn'):
checks_list = request.POST.getlist('checks')
payment_id = request.POST.get('fee_selection')
for item in checks_list:
stud = User.objects.get(username=item)
fee = Fee.objects.get(payment_id=payment_id)
obj, created = FinedStudent.objects.get_or_create(pays_id=fee, stud_id=stud)
if created:
name = stud.first_name + ' ' + stud.last_name
excluded.append(name)
else:
obj.save()
name = stud.first_name + ' ' + stud.last_name
included.append(name)
request.session['included'] = included
request.session['excluded'] = excluded
return render(request, 'studentapp/confirmApplyFees.html')
Я могу сказать, что запрос ['включенный'] имеет список со значениями в нем, потому что obj.save запускается, поэтому я предполагаю, что метод добавления также активирован.
Представление 2: Установка значений словарных ключей в контексте, доступном для данных сеанса запросов
def confirm_apply(request):
context = {
'included': request.session.get('included'),
'excluded': request.session.get('excluded'),
}
return render(request, 'studentapp/confirmApplyFees.html', context)
Шаблон представления 2:
<table class="table">
<thead class=" text-primary">
<th>Name</th>
</thead>
<tbody>
{% if included %}
{% for item in included%}
<tr>
<td>{{item}}</td>
</tr>
{%endfor%}
{% else %}
<tr>
<td>No students to be shown</td>
</tr>
{% endif %}
</tbody>