как перенести список в шаблон

#python #html #django #templates

Вопрос:

Я пытаюсь передать этот подходящий список в свой шаблон, чтобы я мог отобразить его на своем веб-сайте, но когда я запускаю веб-сайт, в нем говорится, что локальная переменная «приемлемая» упоминается перед назначением. Я не понимаю, потому что это единственный раз, когда я использовал слово «приемлемо» в своем коде.

код:

 def specificDate(response):
    empName = employeeName.objects.all
    if 'checkEmployee' in response.POST:
            n = response.POST.get("nameEmployee")
            specDate = response.POST.get("date")
            if employeeName.objects.filter(employee=n).exists() and Name.objects.filter(date=specDate).exists():
                emp = employeeName.objects.get(employee=n)
                t = Name.objects.get(name=emp, date=specDate)
                overT = Name.objects.filter(name=emp, overtime=True)
                eligable = []
                for item in overT:
                    eligable.append(item.date)
                    print('Hello')
                checkIn = t.timeIn.strftime("%H:%M:%S")
                checkOut = t.timeOut.strftime("%H:%M:%S")
                datee = datetime.strptime(specDate,'%Y-%m-%d')
                print("Here:: ",t.date)
                print("Month:: ",datee.month)
                messages.info(response, checkIn   ' - '   checkOut)
                return redirect('/specificDate')
            else:
                messages.info(response, 'Name does not exist')
    else: 
        pass
    return render(response, "main/specificDate.html",  context={"empName":empName, "eligable":eligable})
 

Комментарии:

1. Не могли бы вы предоставить полную трассировку стека ошибок?

2. Задумывались ли вы о том, что происходит, когда ударяется о else ветку? Подсказка: eligable не существует

3. все в порядке, edusanketdk уже дал ответ

Ответ №1:

 def specificDate(response):
    empName = employeeName.objects.all
    eligable = []
    if 'checkEmployee' in response.POST:
            n = response.POST.get("nameEmployee")
            specDate = response.POST.get("date")
            if employeeName.objects.filter(employee=n).exists() and Name.objects.filter(date=specDate).exists():
                emp = employeeName.objects.get(employee=n)
                t = Name.objects.get(name=emp, date=specDate)
                overT = Name.objects.filter(name=emp, overtime=True)
                eligable = []
                for item in overT:
                    eligable.append(item.date)
                    print('Hello')
                checkIn = t.timeIn.strftime("%H:%M:%S")
                checkOut = t.timeOut.strftime("%H:%M:%S")
                datee = datetime.strptime(specDate,'%Y-%m-%d')
                print("Here:: ",t.date)
                print("Month:: ",datee.month)
                messages.info(response, checkIn   ' - '   checkOut)
                return redirect('/specificDate')
            else:
                messages.info(response, 'Name does not exist')
    else: 
        pass
    return render(response, "main/specificDate.html",  context={"empName":empName, "eligable":eligable})
 

Ошибка была правильной, потому что в тех случаях, когда ваш элемент управления не будет находиться внутри блока if, eligable список не будет инициализирован , поэтому после обнаружения последнего оператора он вызовет ошибку.

Исправление состояло в том, чтобы предварительно инициализировать список заранее.

Комментарии:

1. Пожалуйста, избегайте публикации ответов, содержащих только код. Объясните, что вы изменили и почему вы это изменили.

2. У вас нет checkEmployee поля в вашем запросе, поэтому это if утверждение входит в else . Там нет никакого eligable объявления переменной. Затем последняя строка прерывается.

3. Просто добавил, проверьте это. Я нажал enter по ошибке, поэтому он остался незавершенным. 🙂