【问题标题】:How do I access a dictionary value from my html file using a filter custom template?如何使用过滤器自定义模板从我的 html 文件中访问字典值?
【发布时间】:2019-10-28 12:28:37
【问题描述】:

我无法从我的 .html 文件访问在我的 views.py 中声明的字典值。

几个小时以来,我一直在尝试使用之前的几个线程,但我只是看不到它。我确定我做错了什么。

views.py

def test(request):
    now = datetime.now()
    day = now.strftime("%Y-%m-%d")
    year = now.strftime("%Y")
    month = now.strftime("%m")

    context  = {
              "content": [day,year,month],
              "object_list": queryset     
             }
    return render(request, "test.html", context)

filter.py

from django.template.defaulttags import register

@register.filter(name='get_item')
def get_item(dictionary, key):
    return dictionary.get(key)

test.html

{% load filtres_dictionary %}
{% with content.get_item.day as content.day %}

    <p>{{ content|get_item:content.day }}</p>

{% endwith %}

我目前收到以下错误消息,我想得到的是:2019-06-13。印在我的网站上。

VariableDoesNotExist 在 /test/ 在 ['2019-06-13', '2019', '06'] 中查找键 [day] 失败

【问题讨论】:

    标签: python html django django-template-filters


    【解决方案1】:

    以上是不是一个字典值。这是一个列表。但是,您可以通过 index 访问列表元素,例如:

    &lt;p&gt;{{ content<b>.0</b> }}&lt;/p&gt;

    {% with content.get_item.day as content.day %} 行没有多大意义:您在这里似乎为 hypothetical 子字典分配了一个不存在的值。

    话虽如此,我不相信在这里使用 list 是个好主意。实际上,您确实最好使用字典,例如:

    context = {
        'content': {
            'day': day,
            'month': month,
            'year': year
        },
        'object_list': queryset     
    }

    然后你可以在模板中访问它:

    &lt;p&gt;{{ content<b>.day</b> }}&lt;/p&gt;

    注意:您在此处使用的get_item 模板过滤器在密钥本身是可变的情况下很有用,在这种情况下您可以传递任意密钥。 不是这里的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2012-03-25
      • 2012-08-28
      • 1970-01-01
      • 2010-12-02
      • 1970-01-01
      • 2014-01-11
      相关资源
      最近更新 更多