首页 > 解决方案 > 如何使用自定义 django 过滤器传递字符串参数?

问题描述

我在 django 中做了一个新的过滤器。它的名字是 iarray,这是它的定义:

from django import template
from django.template.defaultfilters import stringfilter

register = template.Library()

@register.filter(is_safe=True)
@stringfilter
def iarray(value, arg):
    """
    This return the value of dict in arg index:: value[arg]
    :param value:
    :return:
    """
    value = eval(value)
    return value[str(arg)]

理论上,这个函数应该返回一个给定位置的字典的值。

问题是模板何时呈现。例如:

"text": "<h1>Holguín</h1><br /><p>{{ provincias|iarray:'Holguín'|safe }}</p>"...

上面的代码抛出以下异常:

模板渲染期间出错

In template /srv/www/eicma/templates/eicma/index7.html, error at line 527 (the above line).

问题在于生产模式,在开发模式下问题不存在。这是一个更完整的代码示例:

mapData.paths = [
                            {
                                "enable": true,
                                "name": "Holguín",
                                "abbreviation": "HO",
                                "textX": 0,
                                "textY": 0,
                                "color": "#59798e",
                                "hoverColor": "#E32F02",
                                "selectedColor": "#feb41c",
                                "url": "#",
                                "text": "<h1>Holguín</h1><br /><p>{{ provincias|iarray:'Holguín'|safe }}</p>",
                                "path": "M610.5,166.9 L610.8,167.7 L606.2,167.1 L604.5,165.7 L604.4,164.5 L607.6,163.8 L609.0,164.4 Z M555.8,134.0 L558.3,135.8 .... Z"
                            },

所以,我的问题如下:

  1. 有事吗?当然,我加载了过滤器并添加到 INSTALLED_APPS。

标签: djangopython-3.x

解决方案


推荐阅读