Отображение названия блога, даты создания и тела из базы данных на HTML-странице с помощью Django

Моя таблица базы данных :

class Post(models.Model):
    title = models.CharField(max_length=100)
    body = models.CharField(max_length=1000000)
    created_at = models.DateTimeField(default=datetime.now, blank=True)

Мое мнение:

def post(request, pk):
    posts = Post.objects.filter(title=pk.replace('-', ' '))
    blog_content = Post.objects.all()
    return render(request, 'posts.html', {'posts': posts}, {'blog_content': blog_content}) 

Мой шаблон :

{% block content %}
        <section class="blog-list px-3 py-5 p-md-5">
            <div class="container">
                <div class="item mb-5">
                    <div class="media">
                        <div class="media-body">    
                            <h1 class="title mb-1"><a style = "text-decoration:none;">{{blog_content.title}}</a></h1>
                            <div class="meta mb-1"><span class="date">{{blog_content.body}}</span></div>
                            <div class="intro">{{blog_content.created_at}}</div>
                        </div><!--//media-body-->
                    </div><!--//media-->
                </div><!--//item--> 
            </div>
        </section>
{% endblock %}

Когда я нажимаю на заголовок отдельного блога на главной странице, он должен показать заголовок, дату создания и тело сообщения на странице posts.html. Но он показывает необработанные html и css теги! Каково решение?

Вот подробная информация о странице index (домашняя страница) :

View :

def index(request):
    posts = Post.objects.all()
    return render(request, 'index.html', {'posts': posts})

Шаблоны :

            <div class="media">
                <div class="media-body">
                    {% for post in posts reversed %}
                    <h3 class="title mb-1"><a style = "text-decoration:none;" href="{% url 'post' post.title|slugify %}">{{post.title}}</a></h3>
                    <div class="meta mb-1"><span class="date">{{post.created_at}}</span></div>
                    <div class="intro">{{post.body|truncatewords:30}}</div>
                    <a class="more-link" href="{% url 'post' post.title|slugify %}">Read more &rarr;</a>
                    {% endfor %}
                </div><!--//media-body-->
            </div><!--//media-->

Возможно, эти две проблемы приводят к ошибке, которую вы видите: Во-первых, ваш тег якоря не имеет href, поэтому он не будет ссылаться на другую страницу.

<a style = "text-decoration:none;">{{blog_content.title}}</a>

Должно быть,

<a href="{% url 'posts' %}" style="text-decoration:none;">{{blog_content.title}}</a>

(я просто предполагаю, что вы хотите сделать ссылку на просмотр ваших сообщений)

Во-вторых, эта строка выглядит подозрительно:

posts = Post.objects.filter(title=pk.replace('-', ' '))

Поскольку вы не объявили первичный ключ для вашей модели Post, Django автоматически создает целочисленные первичные ключи (pk), поэтому фильтрация поля title в Post путем замены несуществующего - пробелом не имеет смысла.

Редактирование
. Попробуйте заменить,

<a style = "text-decoration:none;" href="{% url 'post' post.title|slugify %}">{{post.title}}</a>
<!-- WITH -->
<a style = "text-decoration:none;" href="{% url 'post' post.pk %}">{{post.title}}</a>

Затем в просмотре сообщений откройте доступ к нему по:

posts = Post.objects.filter(pk=pk)

Это может означать, что вам придется изменить urls.py:

path('post/<int:pk>', views.post, name='post'),
Вернуться на верх