【问题标题】:how to past list to template如何将列表传递给模板
【发布时间】:2021-07-26 13:59:32
【问题描述】:

我正在尝试将此合格列表传递给我的模板,以便可以在我的网站中显示它,但是当我运行该网站时,它说在分配之前引用了局部变量“合格”。我不明白,因为这是我唯一一次在我的代码中使用了 eligable 这个词。

代码:

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})

【问题讨论】:

  • 能否提供完整的错误堆栈跟踪?
  • 您是否考虑过else 分支被命中时会发生什么?提示:eligable 不存在
  • 没关系 edusanketdk 已经给出了答案

标签: python html django templates


【解决方案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 列表将不会被初始化,因此在遇到最后一条语句后,它会引发错误。

修复方法是预先初始化列表。

【讨论】:

  • 请避免发布纯代码答案。说明您更改了什么以及更改的原因。
  • 您的请求字典中没有checkEmployee 字段,因此if 语句进入else。没有任何 eligable 变量声明。然后最后一行中断。
  • 刚刚添加,查看一下。我误按了输入,所以它仍然不完整。 :)
猜你喜欢
  • 2012-09-27
  • 1970-01-01
  • 2021-07-16
  • 2011-08-17
  • 2014-08-14
  • 2013-02-14
  • 2012-11-01
  • 1970-01-01
相关资源
最近更新 更多