Кнопка LIKE в проекте Django

В проекте Django (страничный блог) есть представление, которое отвечает за работу лайков. У него есть один недостаток: когда пользователю нравится пост, он перенаправляется на главную страницу сайта. Как я могу исправить это, чтобы пользователь оставался на той странице, где он поставил лайк.

views.py

class AddLikeView(View):
     def post(self, request, *args, **kwargs):
         blog_post_id = int(request.POST.get('blog_post_id'))
         user_id = int(request.POST.get('user_id'))
         url_from = request.POST.get('url_from')

         user_inst = User.objects.get(id=user_id)
         blog_post_inst = News.objects.get(id=blog_post_id)

         try:
             blog_like_inst = BlogLikes.objects.get(blog_post=blog_post_inst, liked_by=user_inst)
         except Exception as e:
              blog_like = BlogLikes(blog_post=blog_post_inst,
                          liked_by=user_inst,
                          like=True)
              blog_like.save()
         return redirect(url_from)

template.py

<form action="{% if not is_liked_bool %}{% url 'add' %}{% else %}{% url 'remove' %}{% endif %}" method="post">
{% csrf_token %}
<input type="hidden" name="blog_post_id" value="{{ blog_post_id }}">
<input type="hidden" name="user_id" value="{% if user.is_authenticated %}{{ request.user.id }}{% else %}None{% endif %}">
<input type="hidden" name="url_from" value="{{ request.path }}">

{% if is_liked_bool %}
    <input type="hidden" name="blog_likes_id" value="{{ blog_likes_id }}">
{% endif %}



<button type="submit" class="btn btn-success">
    {% if not is_liked_bool %}
        <i class="fi-xnluxl-heart">♥</i>
    {% else %}
        <i class="fi-xnluxl-heart-solid">♥</i>
    {% endif %}
    <span class="likes-qty">{{ likes_counter }}</span>
</button>

Я думаю, что сначала вам следует проверить поле url_from. Просто напечатайте его, и если оно неправильное, вам следует изменить поле {{request.path}} в вашем шаблоне.

Вы можете попробовать следующее:

{{ request.get_full_path }}

А также, если я правильно помню, вы можете получить доступ к пути с помощью request.path в вашем представлении и нет необходимости передавать путь через шаблон.

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