Django-模板的字符串自定义颜色

时间:2018-12-14 21:31:13

标签: python html django django-templates django-views

嘿,是否可以在视图中自定义文本,这些文本在模板上输出时,某些单词的颜色会有所不同?例如,我有一个要输出到模板的单词:

def test(request):
    text = 'test text but this section is red'
    return render(request, 'test.html', {'text':test}

如何为“此部分为红色”获得其他颜色,但其余部分正常显示在模板中?

2 个答案:

答案 0 :(得分:0)

将其拆分为两个,以便您可以在模板中对其进行区分。

def test(request):
    text = 'test text but'
    red_text = 'this section is red'
    return render(
        request,
        'test.html',
        {'text': text, 'red_text': red_text}
    )

然后进入模板;

<p>{{ text }} <span style="color: red">{{ red_text }}</span></p>

答案 1 :(得分:0)

是的,您可以使用不同的方法来实现。

Django在模板中具有safe过滤器和autoescape标签。

def test(request):
    text = '<span style="color: red">test text but this section is red</span>'
    return render(request, 'test.html', {'text':test}

并在模板中使用;

{{ text|safe }}

{% autoescape off %} {{ text }} {% endautoescape %}

或者您可以使用mark_safe

编写自己的自定义过滤器
from django import template
from django.utils.safestring import mark_safe

register = template.Library()

@register.filter
def custom_filter(text, color):
    safe_text = '<span style="color:{color}">{text}</span>'.format(color=color, text=text)
    return mark_safe(safe_text)

和模板中;

{{ text|custom_filter:'red'}}