Как отобразить содержимое Markdownx в виде HTML в проекте блога на Django?

Я выполнил все шаги по установке markdownx, как указано. Я установил пакет django-markdownx с помощью pip install django-markdownx. Я добавил 'markdownx' к моему INSTALLED_APPS в settings.py. Я определил MarkdownxField в модели записи блога для хранения содержимого в формате Markdown. Но моя проблема в том, что я не уверен в правильном использовании тега шаблона для отображения содержимого в формате Markdown в HTML.

вот мой models.py:

from django.db import models
from markdownx.models import MarkdownxField


class Article(models.Model):
    title = models.CharField(max_length=200)
    content = MarkdownxField()

    def __str__(self):

это мой viwes.py:

from .models import Article


def post_list(request):
    articles = Article.objects.all()
    return render(request, 'blog/post_list.html', {'articles': articles})

вот мой admins.py:

from django.contrib import admin
from .models import Article
from markdownx.admin import MarkdownxModelAdmin

admin.site.register(Article, MarkdownxModelAdmin)

вот мой urls.py из проекта (не приложения):

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('markdownx/', include('markdownx.urls')),
    path('', include("blog.urls")),
]

В админке он правильно показывает превью, но я использовал много тегов для преобразования markdownx в html, но у меня ничего не получилось. Я использовал:

{% for article in articles %}
    <article>
    <h1>{{ article.title }}</h1>
    <div>{{ article.content|markdown|safe }}</div>
</article>
{% endfor %}

, но я получил TemplateSyntaxError. Я использовал:

{% for article in articles %}
    <article>
    <h1>{{ article.title }}</h1>
    <div>{{ article.content|markdownify }}</div>
</article>
{% endfor %}

я получил TemplateSyntaxError. Также я использовал:

{% for article in articles %}
    <article>
    <h1>{{ article.title }}</h1>
    <div>{{ article.formatted_markdown|safe|linebreaks }}</div>
</article>
{% endfor %}

снова у меня только заголовок и содержимое или поле markdown не отображается вообще. Я не смог найти ни одного примера в документации по django-markdownx, на других сайтах они использовали одно из вышеупомянутых решений, которые я пробовал, но не преуспел .

Судя по всему, markdownx выполняет рендеринг уценки и преобразование HTML с помощью widdget поля формы и javascript (см. markdownx docs). Но вы не используете поле формы - вы используете поле модели напрямую - поэтому markdownx здесь ничем не поможет.

Либо вы находите другой способ превратить уценку в HTML (в django нет встроенных тегов или фильтров для этого), либо вы используете формы в своих шаблонах, чтобы markdownx мог использовать свой скрипт.

Вернуться на верх