Django 项目中的 LIKE 按钮

Posted

技术标签:

【中文标题】Django 项目中的 LIKE 按钮【英文标题】:LIKE button in a Django project 【发布时间】:2022-01-04 14:46:14 【问题描述】:

在 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)

模板.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>

【问题讨论】:

当点击提交按钮时,您需要阻止默认表单操作并从前端调用 ajax 请求。这将确保您的页面不会在表单提交时重新加载。你可以通过这个***.com/questions/7335780/… 【参考方案1】:

我认为您应该先检查url_from 字段。只需打印它,如果有误,您应该更改模板中的request.path 字段。

你可以试试这个:

 request.get_full_path 

如果我没记错的话,您可以在视图中使用request.path 访问路径,而无需通过模板发送路径。

【讨论】:

以上是关于Django 项目中的 LIKE 按钮的主要内容,如果未能解决你的问题,请参考以下文章

使用ajax在Django中点击like按钮时如何改变like按钮的颜色并增加一

使用 Jquery 的 Django ajax 'like' 按钮?

Django 项目中的 HTML 音频标签播放按钮显示为灰色

Django Json like 按钮和点赞数不起作用

将项目添加到愿望清单 |姜戈

Django 自定义表单单选按钮