如何编写Django模板自定义标签在单引号前添加反斜杠?

0 投票
1 回答
1169 浏览
提问于 2025-04-15 18:51

我这样做对吗?(可能不对……有人能纠正一下吗?谢谢)

@register.filter('addslashes')
@stringfilter
def addslashes(text, arg):
    return text.replace('\'','\\'')


{{ query|addslashes }}

1 个回答

4

有一个内置的过滤器,名字和这个完全一样:addslashes

这个过滤器会处理双引号和双斜杠。如果你只想处理单引号,那你需要对它进行一些修改,并给它起个不同的名字。

下面是原始的工作方式:

def addslashes(value):
    """
    Adds slashes before quotes. Useful for escaping strings in CSV, for
    example. Less useful for escaping JavaScript; use the ``escapejs``
    filter instead.
    """
    return value.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'")
addslashes.is_safe = True
addslashes = stringfilter(addslashes)

撰写回答