Как проверить, имеет ли сессия с определенным ключом значение пустого списка в Django - PullRequest
0 голосов
/ 11 июня 2019

Я использую две сессии между представлениями. Либо этот сеанс с соответствующим им ['ключом'], имеет значение пустого списка или список со значениями.

Как вы можете заметить в коде, ключ сеанса запроса всегда существует, потому что он был установлен со списком, либо пустым, либо нет. Проблема в том, что, хотя список имеет значения, он ведет себя так, как будто он пустой. Он всегда идет с блоком 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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...