Шаблон уценки не отображает HTML правильно - PullRequest
0 голосов
/ 22 мая 2019

Я создал фильтр уценки на моем веб-сайте Django. Я использовал библиотеку markdown2.

Хотя HTML и отображает, но не отображает его полностью. Подсветка кода и синтаксиса, URL-адреса и списки отображаются неправильно.

папка templatetags

имя файла: ttags.py

from django.template import Library
import markdown2

register = Library()

@register.filter('markdown_to_html')
def markdown_to_html(markdown_text):
    htmlversion=markdown2.markdown(markdown_text)
    return htmlversion

TemplateFile

{% extends "layout.html" %}
{% load ttags %}
{% load static from staticfiles %}

{% block content %}

<div class="content">
{{ step.description | markdown_to_html | safe }}
</div>

{% endblock %}

Текст, который был предоставлен для визуализации, был таким, как показано ниже

##### Usage of Variables

```python
name = "David"
age = 10
```

In the above example name and age are variables that store Text and Numbers respectively.

> Always remember to use Variables in your programs to store information.

HTML-код отображаемого вывода был таким, как показано ниже

<h5>Usage of Variables</h5>

<p><code>python
name = "David"
age = 10
</code></p>

<p>In the above example name and age are variables that store Text and Numbers respectively.</p>

<blockquote>
  <p>Always remember to use Variables in your programs to store information.</p>
</blockquote>

Синтаксис кода не отображается в две строки

1 Ответ

0 голосов
/ 23 мая 2019

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

htmlversion = markdown2.markdown(markdown_text, extras=['fenced-code-blocks'])

Обратите внимание на добавление аргумента ключевого слова extras, переданного в markdown2.markdown.Если вы хотите, чтобы подсветка синтаксиса также работала, вам нужно будет установить pygments и копию соответствующих CSS-файлов для определения стилей подсветки.

У меня нет опыта работы с библиотекой Markdown2, и я никогда не использовал ее.Так как я могу быть уверен, что это правильно?Обратите внимание, что блок изолированного кода:

```python
name = "David"
age = 10
```

обрабатывался по адресу:

<p><code>python
name = "David"
age = 10
</code></p>

Все содержимое блока изолированного кода, включая идентификатор языка, заключено во встроенный кодspan (<p><code>), а не кодовый блок (<pre><code>).Это говорит о том, что синтаксический анализатор Markdown интерпретирует обратные пометки как кодовый диапазон , а не кодовый блок.Поскольку блоки изолированного кода не являются частью исходных правил разметки , мы можем только предположить, что синтаксический анализатор, как и большинство, не поддерживает блоки изолированного кода по умолчанию.На самом деле, быстрая проверка документации показывает, что блоки работающего кода должны быть включены через расширение для их работы.

...