Возврат измененного текста после преобразования Markdown в HTML

#python #html #django #django-views

#python #HTML #django #django-просмотры

Вопрос:

Я создаю свой собственный конвертер markdown в html. В этом фрагменте кода текст должен быть выделен жирным шрифтом, но этого не происходит. Вот код:

 def query(request, title_name):
    content = util.get_entry(title_name)
    bold_pattern = re.compile('[(**|__)]{2}(?P<bold_text>[ws] )[(**|__)]{2}')
    bold_matches = re.finditer(bold_pattern, content)
    new = ""
    for match in bold_matches:
        pos_x = content.find(match.group())
        pos_y = pos_x len(match.group())
        new = re.sub(bold_pattern, match.group("bold_text"), content[pos_x:pos_y])
        content = content.replace(content[pos_x:pos_y], f'<b>{new}</b>')
        mark_safe(content)
      
    return render(request, ".../entry.html",{
        "content": content,
        "title": util.get_page_name(title_name)
    })
  

Есть ли что-то, чего я не хватает, прежде чем вернуть это в HTML?
Вот мой простой entry.html:

 {% extends ".../layout.html" %}

{% block title %}{{ title }}{% endblock title %}

{% block body %}
{{content}}

<p>Edit this page <a href="{% url 'edit' title %}">here</a></p> 

{% endblock body %}
  

Ответ №1:

Автоматическое экранирование

По умолчанию движок шаблонов django экранирует все HTML-символы, которые передаются в шаблон. Вы можете прочитать об этом здесь.

Чтобы отключить автоэскейпирование только для одной переменной, используйте: {{content|safe}}