我正在尝试用Django和Ajax做一些简单的事情。你知道吗
我的目标是做一个大厅网站,每个客户都知道大厅里每个人的名字。你知道吗
我这样做的方式(请容忍我,即使这是你听过的最糟糕的方法)是让客户每秒钟发送一条信息,说“我还在这里!”。如果服务器在5秒钟内没有从客户机中删除该客户机,则该客户机将从大厅中的人员列表中删除。我有这个工作。你知道吗
我不知道的是如何将我在Django视图中的球员名单发送回客户端。我一直在尝试使用JsonResponse,然后在$.ajax()
调用的success函数中接收它,但我似乎无法让它工作。你知道吗
这是我的电话:
$.ajax({
url: apiUpdateUrl,
method: "post",
data: {
csrfmiddlewaretoken: Cookies.get("csrftoken")
},
dataType: "json",
success: function(data) {
console.log(data.player_list)
}
});
以下是我的Django观点:
def update(request):
if Player.objects.filter(nickname=request.user.username).count() == 0:
player = Player(nickname=request.user.username, time_joined=datetime.datetime.now())
player.save()
else:
player = Player.objects.get(nickname=request.user.username)
player.save()
curr_time = datetime.datetime.now()
for player in Player.objects.all():
if (curr_time - player.last_update).total_seconds() >= 5:
Player.objects.filter(pk=player.pk).delete()
player_list = [p.nickname for p in Player.objects.all()]
print(player_list)
return JsonResponse({"player_list": player_list})
不是解决方案,但我可以推荐一些优化-
1)无需post请求:您可以进行get ajax调用,因为您不发送任何数据。你知道吗
2)您可以这样减少视图中的代码:
相关问题 更多 >
编程相关推荐