zoukankan      html  css  js  c++  java
  • django中添加新的filter

    给模板传递了一个字典,却发现无法在模板中直接通过key获得value. 查阅资料后,这个问题可以通过添加自定义的filter来解决.

    首先在app目录下创建一个templatetags目录,并在它的下面创建一个__init__.py和dict_get_item.py文件,其中__init__py文件的作用是使templatetags成为一个模块,它直接为空即可.而dict_get_item.py里就需要定义我们的filter,具体名称可以根据自己的需要修改.

    # app/templatetags/dict_get_item.py
    
    from django import template
    register = template.Library()
    
    @register.filter(name='dict_get_item')
    def get_item(dictionary, key):
        return dictionary.get(key)
    

    之后好需要在工程的settings.py文件中添加我们的filter. 在TEMPLATES列表的OPTIONS中添加libraries,例如:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
    
                'libraries': {
                    'dict_get_item' : 'app.templatetags.dict_get_item',
                }
            },
        },
    ]
    

    完成之后,我们就能在自己的模板文件中使用取key的方式访问dict.

    {% load dict_get_item %}
    
    {{ dict | dict_get_item:key   }}  
    
  • 相关阅读:
    CSS相关知识点
    嵌入式经典面试题
    代码阅读——十个C开源项目
    2020年3月编程语言排行
    C++题目
    英文符号对照大全
    详解Sort函数降序排序-c++
    C/C++语言学习资料,原创
    Bootstrap组件之响应式导航条
    Boostrap全局CSS样式
  • 原文地址:https://www.cnblogs.com/xl2432/p/10883211.html
Copyright © 2011-2022 走看看