使用点运算符访问字典时,条件语句在Django模板中不起作用

使用点运算符访问字典时,条件语句在Django模板中不起作用,django,python-2.7,django-templates,django-orm,Django,Python 2.7,Django Templates,Django Orm,如果文件daily-yyyy-mm.csv退出,但它始终显示不可用,则我尝试提供下载选项 即使文件存在 我在views.py中创建了一个字典(文件列表),如果文件存在,它会为该索引保存True。我已经检查了在os.path.join生成的路径,它是正确的,而且字典对存在的文件也是正确的。我认为问题在于在访问模板中的字典时使用了两个嵌套的点运算符 模板 {% for upload in upload_list %} <tr> {%

如果文件daily-yyyy-mm.csv退出,但它始终显示不可用,则我尝试提供下载选项 即使文件存在

我在views.py中创建了一个字典(文件列表),如果文件存在,它会为该索引保存True。我已经检查了在os.path.join生成的路径,它是正确的,而且字典对存在的文件也是正确的。我认为问题在于在访问模板中的字典时使用了两个嵌套的点运算符

模板

        {% for upload in upload_list %}
        <tr>
            {%if file_list.upload.upload_report_date %}
            <td><a href="{%static 'media/daily-{{ upload.upload_report_date|date:"Y-m" }}.csv" download >Download</a></td>

            {% else %}
            <td>Not Available</td>
            {% endif %}
        </tr>
        {% endfor %}

我使用的是python 2.7和django 1.6.7。

您当前试图从模板中访问字典
文件列表
文件列表。上传。上传报告日期

有了它,您将始终登录到
else
,因为您无法通过这种方式访问它。 您的代码尝试获取
文件列表
的属性
上传
,该属性将始终返回
,因为它不存在

您可以做的是创建可用文件的列表(因为您已经调用了变量
\u list
):

文件列表=[]
对于上传列表中的上传:
尝试:
如果os.path.存在(…):
文件\u列表.append(上传.上传\u报告\u日期)
除:
通过
然后在模板中:

{% if upload.upload_report_date in file_list %}
...

当您在视图中简单地渲染或打印它时,什么是
文件\u列表。上载。上载报告\u日期
?如果我简单地渲染它,它是空的。
{% if upload.upload_report_date in file_list %}
...