【问题标题】:Django: How to Like an Object with AjaxDjango:如何使用 Ajax 喜欢一个对象
【发布时间】:2018-04-03 04:31:42
【问题描述】:

这是我的观点,

class ObjLike(RedirectView):
def get_redirect_url(self, *args, **kwargs):
    id = self.kwargs.get('id')
    obj = get_object_or_404(Data, id=id)
    user = self.request.user
    if user.is_authenticated():
        if user in obj.likes.all():
            obj.likes.remove(user)
        else:
            obj.likes.add(user)

那么在这个视图之后我如何将用户重定向到同一页面?

我使用了“return redirect(request.META['HTTP_REFERER'])”,但它给出了一个错误“name 'request' is not defined”

我不能使用获取绝对 URL 方法,我在几个地方都在使用这个视图。

那么,我该怎么做呢?

【问题讨论】:

  • 你能告诉我你在这个视图中要做什么,因为我认为你应该使用 ajax 调用而不是重定向用户然后将他们重定向到上一页。
  • 然后使用 ajax 调用将您的问题更新为如何使用 ajax 喜欢一个对象,以便我可以回答它
  • 谢谢,请稍等,我正在发布答案:)
  • 加入discussion

标签: python django


【解决方案1】:

要喜欢带有 ajax 调用的对象,请执行此操作 首先在 html 中我们要制作一个like 按钮:

<button id="like">Like!</button>

添加一个包含 ajax 的脚本:

<script>
$(document).ready(function() {
$("#like").click(function(event){
        $.ajax({
             type:"POST",
             url:"{% url 'like' Obj.id %}",
             success: function(data){
                 confirm("liked")

             }
        });
        return false;
   });

});
</script>

我们将like url添加到urlpatterns列表中:

url(r'like/obj/(?P<pk>[0-9]+)/', views.like, name="like"),

添加视图:

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def like(request, pk)
    obj = Obj.objects.get(id=pk)
    obj.likes += 1
    obj.save()
    return HttpResponse("liked")

注意:您可以自定义点赞视图以检查用户是否已经点赞

【讨论】:

  • 哇,非常感谢先生 :)
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 2012-07-24
相关资源
最近更新 更多