Заменить текст жирным шрифтом в шаблоне Django - PullRequest
0 голосов
/ 10 октября 2018

У меня есть переменная

text = "replace some word" 

в представлении.Я хочу заменить 'some' на жирный.Вот так:

"replace **some** word"

Как обрабатывать эту переменную в шаблоне django?

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете создавать собственные теги шаблонов для рендеринга вещей такого типа.Вы должны написать несколько дополнительных строк кода.Но как только вы это сделаете, использовать функцию замены каждый раз будет все меньше и меньше времени.

Создайте пользовательский файл тега / фильтра с именем mytags.py , макет вашего приложения может выглядеть следующим образом:

myapp/
    __init__.py
    models.py
    templatetags/
        __init__.py
        mytags.py
    views.py

Запись в mytags.py :

from django import template

register = template.Library()

def bold(text):
    return text.replace('**','<strong>',1).replace('**','</strong>',1)

register.filter('bold', bold)

В шаблоне сначала загрузите файл пользовательского тега:

{% load mytags %}

Примените этот пользовательский тег к тексту:

{{ text|bold }}

Дляссылка: https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/

0 голосов
/ 10 октября 2018

Очевидно, что ** не создает жирную строку в шаблоне, и вам будет гораздо сложнее попытаться заменить эти маркеры соответствующими открывающими и закрывающими тегами в шаблоне, например, с помощью специального фильтра.Однако вы можете сделать его жирным в представлении, применив там необходимый HTML-код и пометив его как безопасный :

# views.py
from django.utils.safestring import mark_safe

# in your view
# ...
text = "replace some word"
# add the appropriate html tags
text = text.replace('some', '<strong>some</strong>')
# now you have to mark it as safe so the tags will be rendered as tags
text = mark_safe(text)
# ...
return render(reqest, template, {.., 'text': text, ...})

Теперь вы можете просто использовать его как обычную переменную в шаблоне через{{ text }}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...