urls.py
url(r'^level/ajax/reload/$', views.ajax_change_status,
name='ajax_change_status'),
url(r'^level/(\d+)/ajax/reload/$', views.ajax_change_status,
name='ajax_change_status'),
url(r'^level/(\d+)/(\d+)/ajax/reload/$', views.ajax_change_status,
name='ajax_change_status'),
我的urls.py中有这些urls。我试图在我的视图中调用ajax函数,以在用户单击响铃图标后将通知标志更新为0.通知标志位于base.html模板中。我用名称“ ajax_change_status”调用该URL。我希望所有这些URL都调用相同的Ajax函数。是否可以执行此操作,还是有更好的方法?当我单击第二个和第三个URL的响铃图标时出现500个服务器错误
views.py中的ajax函数:
def ajax_change_status(request):
if request.is_ajax():
try:
Notification.objects.filter(receiver=request.user)
.update(viewed=True)
Addnotify.objects.filter(receiver=request.user)
.update(viewed=True)
FollowNotify.objects.filter(receiver=request.user)
.update(viewed=True)
HubNotify.objects.filter(receiver=request.user)
.update(viewed=True)
return JsonResponse({"success": True})
except Exception as e:
print(e)
return JsonResponse({"success": False})
我的ajax jQuery:
var clicks = 0;
$("#notify").on('click', function () {
$.ajax({
url: 'ajax/reload/',
data: {
},
success: function (data) {
if (data.success) {
console.log('ajax call success.');
$('#badge').html('0')
$('#headnotify').html('NOTIFICATIONS (0)')
// here you update the HTML to change the active to innactive
}else{
console.log('ajax call not success.');
}
clicks++;
}
});
});
当我在第二个和第三个URL上尝试时,似乎没有进入ajax函数!
答案 0 :(得分:1)
这些网址中的每个网址都应具有不同的名称。允许使用可选的url参数将很痛苦。如果您以不同的方式命名它们,将会更好(并且更加理智)。您的view函数可能应该允许那些传入,否则它们的目的是什么?
def ajax_change_status(request, param1=None, param2=None):
...
我个人喜欢使用关键字参数,因为它可以更好地说明url路径,但这取决于您。