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   }}  
    
  • 相关阅读:
    29 顺时针打印矩阵(四-画图让抽象问题形象化)
    27 二叉树镜像(四-画图让抽象问题形象化)
    java的4种代码块
    Eclipse中连接Sql Sever2008 -----转自Yogurshine
    java之HashMap的遍历Iterator
    java之插入排序
    java之选择排序
    java之冒泡排序
    java之快速排序
    java之折半查找
  • 原文地址:https://www.cnblogs.com/xl2432/p/10883211.html
Copyright © 2011-2022 走看看