#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}}