【问题标题】:Replace a char in django template before final rendering在最终渲染之前替换 django 模板中的字符
【发布时间】:2019-06-05 09:44:37
【问题描述】:

我想在 Django 模板中将模板中的所有星号 (*) 设为红色。 (例如,在 * 符号指向的表单标签中,该字段是必需的。但是当将 * 放在表单字段的标签中时,它会像往常一样呈现为黑色。

我怎样才能通过例如注册过滤器或标签来实现这一点?

请注意,我使用了一些库(例如 bootstrap4 表单)并且页面充满了 {{ }} 标记。但我想在最终呈现的 html 页面中找到并替换所有 ;black *' 和 'red *'。

编辑:我使用 django-bootstrap4,所以我只是使用 {% bootstrap_form form %} 在我的模板中。 (因此不能明确访问标签文本)我怎样才能实现我的目标?

【问题讨论】:

    标签: django django-templates jinja2 django-bootstrap4


    【解决方案1】:

    这对我有用

    # templatetags/custom_tags.py
    from django import template
    
    register = template.Library()
    
    @register.filter
    def mark_as_required(text):
        return '<span style="color:red">{text}</span>'.format(text=text)
    
    # templates/xxx.html
    ...
    {% load custom_tags %}
    ...
    {{ '*'|mark_as_required|safe }}
    ...
    

    【讨论】:

    • 谢谢。但请参阅我的编辑。谢谢
    • 最好也将 django-bootstrap 标签添加到您的问题中
    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 2022-01-15
    • 2018-10-09
    • 2020-08-10
    • 2014-02-24
    • 2014-12-08
    • 2021-06-01
    • 2017-07-04
    相关资源
    最近更新 更多