Python 使用Javascript更改Django模型
因此,每当有人按下按钮时,我想将Django模块“Post.upvots”更改为+1 无需重新加载页面 我认为它叫做Ajax JS: html: url.pyPython 使用Javascript更改Django模型,python,html,ajax,django,Python,Html,Ajax,Django,因此,每当有人按下按钮时,我想将Django模块“Post.upvots”更改为+1 无需重新加载页面 我认为它叫做Ajax JS: html: url.py 那么我该怎么做呢?您需要使用ajax来解决这个问题 为此URL创建单独的路由。(最好使用post方法) my_views.py 你的js 您是否尝试过在javascript中查找如何发出ajax请求?基本上,您需要一个POST(而不是GET,因为您正在更改数据库),因此您的视图应该响应POST请求。您的ajax调用应该是您为视图定义的UR
那么我该怎么做呢?您需要使用ajax来解决这个问题 为此URL创建单独的路由。(最好使用post方法) my_views.py 你的js
您是否尝试过在javascript中查找如何发出ajax请求?基本上,您需要一个POST(而不是GET,因为您正在更改数据库),因此您的视图应该响应POST请求。您的ajax调用应该是您为视图定义的URL,将
pk
作为数据发送,您的视图应该使用JSON响应进行响应,以便脚本知道它是否成功。return HttpResponse(JSON.dumps(…)json从何而来?HttpResponse只返回我们刚刚以json格式创建的dict。理想情况下,此响应具有post投票计数。对于thr错误,请检查url,您必须在末尾有尾随斜杠。
$('.buttonclass').click(function(){
var pk;
pk = $(this).attr("data-pk");
});
<span data-pk="{{post.pk}}" class="buttonclass"></span>
def upvote(request):
pk = None
if request.method == 'GET':
pk = request.GET['pk']
obj = models.Post.objects.get(pk=pk)
obj.upvotes = obj.upvotes +1
obj.save()
return redirect("index") #without this
url(r"upvote/(?P<pk>\d+)/$", views.upvote, name="upvote"),
class Post(models.Model):
upvotes = models.IntegerField(default = 0)
from django.http import HttpResponse
def upvote(request):
pk = request.GET['pk']
obj = models.Post.objects.get(pk=pk)
obj.upvotes = obj.upvotes +1
obj.save()
response_data = {'success':1}
return HttpResponse(json.dumps(response_data), content_type="application/json")
$('.buttonclass').click(function(){
var pk = $(this).attr("data-pk");
$.get('[YOUR_URL_HERE]'+/pk,function (r){console.log(r);})
});