Как сделать так, чтобы кнопка "Мне нравится" отображалась в записях моего блога?

У меня возникли проблемы с отображением кнопки "Мне нравится", я не уверен, что нужно ввести в post_detail.html, чтобы кнопка "Мне нравится" отображалась в сообщениях блога. Я пробовал {% include и вставлял весь код из main.html в post_detail.html и т.д.

Но все, что я получаю, это ошибки, какой правильный способ заставить код из main.html отображаться в записи блога post_detail.html ?

буду очень признателен за помощь, потому что я застрял на этом очень долго и не могу понять, как заставить кнопку "нравится" отображаться на сообщениях блога.

newsapp папка views.py

from django.shortcuts import render, get_object_or_404, redirect
from django.views import generic
from .models import Post, Like
from .forms import CommentForm


class PostList(generic.ListView):
    queryset = Post.objects.filter(status=1).order_by('-created_on')
    template_name = 'index.html'
    paginate_by = 6

def post_view(request):
    qs = Post.objects.all()
    user = request.user

    context = {
        'qs': qs,
        'user': user,
    }

    return render(request, 'newsapp/main.html', context)

def like_post(request):
    user = request.user
    if request.method == 'POST':
        post_id = request.POST.get('post_id')
        post_obj = Post.objects.get(id=post_id)

        if user in post_obj.liked.all():
            post_obj.liked.remove(user)
        else:
            post_obj.liked.add(user)

        like, created = Like.objects.get_or_create(user=user, post_id=post_id)

        if not created:
            if like.value == 'Like':
                like.value = 'Unlike'
            else:
                like.value = 'Like'

        like.save()
    return redirect('newsapp:post-list')




def post_detail(request, slug):
    template_name = 'post_detail.html'
    post = get_object_or_404(Post, slug=slug)
    comments = post.comments.filter(active=True)
    new_comment = None
    # Comment posted
    if request.method == 'POST':
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():

            # Create Comment object but don't save to database yet
            new_comment = comment_form.save(commit=False)
            # Assign the current post to the comment
            new_comment.post = post
            # Save the comment to the database
            new_comment.save()
    else:
        comment_form = CommentForm()

    return render(request, template_name, {'post': post,
                                           'comments': comments,
                                           'new_comment': new_comment,
                                           'comment_form': comment_form})

newsapp папка urls.py

from django.urls import path
from . import views
from .views import post_view, like_post


app_name = 'newsapp'

urlpatterns = [
    path('', views.PostList.as_view(), name='home'),
    path("<slug:slug>/", views.post_detail, name="post_detail"),
    path('', post_view, name='post-list'),
    path('like/', like_post, name='like-post'),
] 

newsapp папка models.py

from django.db import models
from django.contrib.auth.models import User
from cloudinary.models import CloudinaryField


STATUS = (
    (0,"Draft"),
    (1,"Publish")
)

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    slug = models.SlugField(max_length=200, unique=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')
    updated_on = models.DateTimeField(auto_now=True)
    content = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    status = models.IntegerField(choices=STATUS, default=0)
    liked = models.ManyToManyField(User, default=None, blank=True, related_name="liked")

    class Meta:
        ordering = ['-created_on']

    def __str__(self):
        return self.title

    @property
    def num_likes(self):
        return self.liked.all().count()

LIKE_CHOICES = (
    ('Like', 'Like'),
    ('Unlike', 'Unlike'),
)

class Like(models.Model):
    User = models.ForeignKey(User, on_delete=models.CASCADE)
    Post = models.ForeignKey(Post, on_delete=models.CASCADE)
    value = models.CharField(choices=LIKE_CHOICES, default='Like', max_length=10)

    def __str__(self):
        return str(self.post)


class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)

    class Meta:
        ordering = ['created_on']

    def __str__(self):
        return 'Comment {} by {}'.format(self.body, self.name)

newsapp папка forms.py

from django import forms
from .models import Comment


class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ("name", "email", "body")

newsapp папка admin.py

from django.contrib import admin
from django_summernote.admin import SummernoteModelAdmin
from .models import Post, Comment, Like


@admin.register(Comment)
class CommentAdmin(admin.ModelAdmin):
    list_display = ('name', 'body', 'post', 'created_on', 'active')
    list_filter = ('active', 'created_on')
    search_fields = ('name', 'email', 'body')
    actions = ['approve_comments']

    def approve_comments(self, request, queryset):
        queryset.update(active=True)

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'status','created_on')
    list_filter = ("status",)
    search_fields = ['title', 'content']
    prepopulated_fields = {'slug': ('title',)}

class PostAdmin(SummernoteModelAdmin):
    summernote_fields = ('content',)

admin.site.register(Post, PostAdmin)
admin.site.register(Like)

newsblog папка urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('newsapp.urls')),
    path('summernote/', include('django_summernote.urls')),
    path('newsapp/', include('newsapp.urls', namespace='newsapp')),
]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

newsblog папка settings.py

папка templates base.html

папка templates index.html

<header class="masthead">
    <div class="overlay"></div>
    <div class="container">
        <div class="row">
            <div class=" col-md-8 col-md-10 mx-auto">
                <div class="site-heading">
                    <h3 class=" site-heading my-4 mt-3 text-white"> NewsBlog and Automated news with API</h3>
                    <p class="text-light">We Love Django As much as you do..! &nbsp
                    </p>
                </div>
            </div>
        </div>
    </div>
</header>
<div class="container">
    <div class="row">
        <!-- Blog Entries Column -->
        <div class="col-md-8 mt-3 left">
            {% for post in post_list %}
            <div class="card mb-4">
                <div class="card-body">
                    <h2 class="card-title">{{ post.title }}</h2>
                    <p class="card-text text-muted h6">{{ post.author }} | {{ post.created_on}} </p>
                    <p class="card-text">{{post.content|slice:":200" }}</p>
                    <a href="{% url 'newsapp:post_detail' post.slug  %}" class="btn btn-primary">Read More &rarr;</a>
                </div>
            </div>
            {% endfor %}
        </div>
        {% block sidebar %} {% include 'sidebar.html' %} {% endblock sidebar %}
    </div>
</div>
{%endblock%}

папка templates main.html

{% extends 'base.html' %}

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

{% block content %}
    {% for obj in qs %}
        <div class='ui segment'>
        <h1>{{ obj.title }}</h1>
        <p>{{ obj.body }}</p>
        <form action="{% url 'newsapp:like-post'%}" method='POST' class="ui form">
            {% csrf_token %}
            <input type='hidden' name='post_id' value="{{ obj.id}}">
            {% if user not in obj.liked.all %}
                <button class="ui button positive" type='submit'>Like</button>
            {% else %}
                <button class="ui button negative" type='submit'>Unlike</button>
            {% endif %}
            <strong>{{ obj.liked.all.count }} likes</strong>
        </form>
    </div>
    {% endfor %}
{% endblock content %}

папка templates post_detail.html

{% extends 'base.html' %} {% block content %}
    {% load crispy_forms_tags %}

    <div class="container">
        <div class="row">
            <div class="col-md-8 card mb-4  mt-3 left  top">
                <div class="card-body">
                    <h1>{% block title %} {{ post.title }} {% endblock title %}</h1>
                    <p class=" text-muted">{{ post.author }} | {{ post.created_on }}</p>
                    <p class="card-text ">{{ post.content | safe }}</p>
                </div>
            </div>
            {% block sidebar %} {% include 'sidebar.html' %} {% endblock sidebar %}

            <div class="col-md-8 card mb-4  mt-3 ">
                <div class="card-body">
                    <!-- comments -->
                    {% with comments.count as total_comments %}
                        <h2>{{ total_comments }} comments</h2>

                        <p>
                    {% endwith %} {% for comment in comments %}
                        </p>

                        <div class="comments" style="padding: 10px;">
                            <p class="font-weight-bold">
                                {{ comment.name }}
                                <span class=" text-muted font-weight-normal">
                                    {{ comment.created_on }}
                                </span>
                            </p>
                            {{ comment.body | linebreaks }}
                        </div>

папка templates sidebar.html

{% block sidebar %}

<style>
        .card{
            box-shadow: 0 16px 48px #E3E7EB;
        }

</style>

<!-- Sidebar Widgets Column -->
<div class="col-md-4 float-right ">
<div class="card my-4">
        <h5 class="card-header">Info</h5>
    <div class="card-body">
        <p class="card-text">Blog yourself about the Latest news or find new via the Automated news Feature! </p>
    </div>
</div>
</div>

{% endblock sidebar %}
Вернуться на верх