Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将like按钮转换为Ajax支持的like按钮_Python_Jquery_Django_Ajax_Django Class Based Views - Fatal编程技术网

Python 将like按钮转换为Ajax支持的like按钮

Python 将like按钮转换为Ajax支持的like按钮,python,jquery,django,ajax,django-class-based-views,Python,Jquery,Django,Ajax,Django Class Based Views,我正在做一个反向博客项目,在那里用户可以喜欢和评论。 虽然我成功地实现了like按钮的工作,但它刷新了页面 我的问题是,我试图将其转换为使用Ajax为按钮供电。 to也使用一个标志来决定显示哪个按钮,喜欢还是不喜欢 我需要帮助或逻辑来指导我如何将按钮转换为使用Ajax 请注意:我使用分页,类似按钮位于列表视图和详细视图CBV上。 先谢谢你 这是我对按钮的看法 这是我的模型 这是我的模板渲染 如果有多个相似按钮,请为每个相似按钮设置唯一id。将click事件绑定到JS函数,您将在其中创建ajax调

我正在做一个反向博客项目,在那里用户可以喜欢和评论。 虽然我成功地实现了like按钮的工作,但它刷新了页面

我的问题是,我试图将其转换为使用Ajax为按钮供电。 to也使用一个标志来决定显示哪个按钮,喜欢还是不喜欢

我需要帮助或逻辑来指导我如何将按钮转换为使用Ajax 请注意:我使用分页,类似按钮位于列表视图和详细视图CBV上。 先谢谢你

这是我对按钮的看法

这是我的模型

这是我的模板渲染


如果有多个相似按钮,请为每个相似按钮设置唯一id。将click事件绑定到JS函数,您将在其中创建ajax调用。将模型对象的ID传递给JS函数,该函数将在ajax调用中传递给视图。指定类似增量函数所在的视图的URL

下面是django中按钮单击时ajax调用的实现

更新:ajax基于类的视图更改

在基于类的视图函数中:

接受以下参数:


        model_id = json.loads(request.POST.get('param_name')) # model_id could be your post ID to increase the likes
而不是针对ajax的呈现返回JSON响应:

        return JsonResponse({
             'like_count': model_to_dict(total_likes), # if you want to display total likes
             'success': True
             })
您可以使用ajax的成功函数中的total likes将其显示在模板中

请在文件开头导入json

更新:用于处理ajax POST请求的基于类的视图示例

class myClassView(View):
    template_name='index.html'
    def post(self,request):  # overriding the post method
        myparam = json.loads(request.POST.get('paramFromAjax'))
        # perform your actions here
        # make a dictionary/context say mydic and pass parameters in that
        return JsonResponse({
             'paramToAjax': mydic,
             'success': True
             })


谢谢,今晚我将尝试一下,并向您介绍最新情况。return JsonResponse我应该在CBV中使用它还是在类似post_的函数中使用它,请。如果ajax类型为POST,则POST函数应返回jsonresponseMy。我的问题是重新构造CBV以接收或使用ajax调用。正在工作,但即使在调用event.preventDefault之后页面仍会刷新。请使用代码段而不是图像。