#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 по ошибке, поэтому он остался незавершенным. 🙂