2016-09-27 6 views
-1

В моем проекте Django я хочу сделать текст полужирным, если звездочки * есть в начале и конце текста, та же самая особенность, что и здесь, в Stack Overflow. Хотя я конвертирую ** в <b>, из-за выходного выхода он становится &lt;b&gt;. Каков правильный подход к достижению этого?Полужирный текст со звездочками

файл шаблон содержит {{ anidea.description|format_text}}

format_text является пользовательским шаблоном фильтра

кодовых ..

from django import template 
from django.utils.safestring import mark_safe 


register = template.Library() 

@register.filter(name='format_text') 
def custom_formating(value): 
    for word in value.split():  

    start = word[:2] 
    end = word[-2:] 

    if start == '**' and end == '**': 
     word = word[2:-2]   
     word = '<b>' +word+ '</b>' 
     mark_safe(word)  


    return value 
+2

Не могли бы вы показать [mcve] вашей текущей реализации? Рассматривали ли вы использование существующей библиотеки Markdown? Прочитайте, когда и как Django применяет экранирование HTML? – jonrsharpe

+0

«Полужирный для Delphi - это расширенный объект Relational Mapper (ORM) и инфраструктура приложения. Не используйте стиль шрифта с надписью« bold ». Пожалуйста, ознакомьтесь с описаниями тегов при их добавлении. – Sayse

+0

Я новичок в django .. не очень осведомлен о библиотеке – Shri

ответ

0

если вы хотите полный набор всех функций уценки, идти с существующей библиотекой уценки.

если вы просто хотите < б > для печати непосредственно к исходному коду без побега, используйте

{{ some_var|safe }} 
+0

Я не хочу отключать 'autoescape' – Shri

0

Я сделал это следующим образом.

views.py

i.description = i.description.split() #use of split() 

файл шаблона (Format_Text является custom template filter)

{% for text in anidea.description %} 
    {{ text|format_text }} 
{% endfor %} 

фильтр

@register.filter(name='format_text') 
def custom_formating(value): 
start = value[:2] 
end = value[-2:] 

if start == '**' and end == '**': 
    value = value[2:-2]   
    value = '<b>' +value+ '</b>' 
    return mark_safe(value) 
else: 
    return value 

с этим способом можно достичь экранирования для описания и желаемого форматирования текста ,

Смежные вопросы