首页 > 解决方案 > 将列表字典传递给模板不起作用 django

问题描述

我正在尝试传递一个名为 eligable 的列表,以便我可以在我的网站上显示,但是当我运行我的网站时,它不会显示该列表。我不明白出了什么问题。

代码:

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)
            for item in overT:
                eligable.append(item.date)
            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})

这是打印我的列表的 html:

{% for item in eligable %}
<div class="pad3">
    {{item}}
</div>
{% endfor %}

标签: pythonhtmldjangolisttemplates

解决方案


您的代码中有两个返回语句:

    return redirect('/specificDate')

    return render(response, "main/specificDate.html",  context={"empName":empName, "eligable":eligable})

第一个只是重定向而不填充上下文。

第二个确实填充了上下文,但只有在eligable为空时才能到达。

我认为将第一个返回更改为第二个应该可以解决它。

编辑:你在这里缺少 {% endfor %} 。但是,如果您在完整代码中遗漏了它,它应该会给您一个错误。


推荐阅读