Python 键错误';%trans";{}";%';在自定义标记中

Python 键错误';%trans";{}";%';在自定义标记中,python,django,django-templates,django-template-filters,Python,Django,Django Templates,Django Template Filters,我创建了一个简单的标记,使添加工具提示更加简单。我已经用和html\u tags.py创建了一个templatetags文件夹 html_tags.py from django import template from django.utils.html import format_html register = template.Library() @register.simple_tag def tooltip(text): return format_html('<a h

我创建了一个简单的标记,使添加工具提示更加简单。我已经用
html\u tags.py
创建了一个templatetags文件夹

html_tags.py

from django import template
from django.utils.html import format_html

register = template.Library()

@register.simple_tag
def tooltip(text):
    return format_html('<a href="#" data-toggle="tooltip" title="{% trans "{}" %}"><img src="{% static "icons/tooltip.png" %}"></img></a>'.format(text))
它提出:

格式字符串中遇到单个“}”

你知道问题出在哪里吗

  • 这是因为
    format\u html
    仅检查并返回您的html字符串是否有效 例如,

    >>> format_html('<a href="">dada</a>')
    '<a href="">dada</a>'
    >>> 
    >>> format_html('{% trans "foobar" %}')
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
      File "/path/to/lib/python3.5/site-packages/django/utils/html.py", line 106, in format_html
        return mark_safe(format_string.format(*args_safe, **kwargs_safe))
    KeyError: '% trans "foobar" %'
    >>>
    
  • 这是因为
    format\u html
    仅检查并返回您的html字符串是否有效 例如,

    >>> format_html('<a href="">dada</a>')
    '<a href="">dada</a>'
    >>> 
    >>> format_html('{% trans "foobar" %}')
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
      File "/path/to/lib/python3.5/site-packages/django/utils/html.py", line 106, in format_html
        return mark_safe(format_string.format(*args_safe, **kwargs_safe))
    KeyError: '% trans "foobar" %'
    >>>
    

    这个答案并不能解决问题。format_html(ugettext_lazy('{%if get==True%}'))键错误:u'%if get==True%'此答案无法解决问题。format_html(ugettext_lazy('{%if get==True%}'))键错误:u'%if get==True%'
    from django.utils.translation import ugettext_lazy as _
    
    @register.simple_tag
    def tooltip(text):
        return format_html('<a href="#" data-toggle="tooltip" title="%(text)s">'
                           '<img src="/static/icons/tooltip.png"></img></a>' % {'text': _(text)})