Python 在多个URL django上调用相同的函数

Python 在多个URL django上调用相同的函数,python,jquery,ajax,django,Python,Jquery,Ajax,Django,url.py 在my urls.py中,我有这些url。我试图在我的视图中调用ajax函数,基本上是在用户单击钟形图标后将通知标记更新为0。通知标记位于base.html模板中。我调用名为“ajax\u change\u status”的url。我希望所有这些url都调用相同的ajax功能。是否有可能这样做,或者有更好的方法吗?当我从第二个和第三个url中单击钟形图标时,我收到一个500服务器错误 views.py中的My ajax函数: url(r'^level/ajax/reload/$'

url.py

在my urls.py中,我有这些url。我试图在我的视图中调用ajax函数,基本上是在用户单击钟形图标后将通知标记更新为0。通知标记位于base.html模板中。我调用名为“ajax\u change\u status”的url。我希望所有这些url都调用相同的ajax功能。是否有可能这样做,或者有更好的方法吗?当我从第二个和第三个url中单击钟形图标时,我收到一个500服务器错误

views.py中的My ajax函数:

 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'),
我的ajax jquery:

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})

当我在第二个和第三个url上尝试它时,它似乎没有进入ajax功能

这些URL中的每一个都应该有不同的名称。允许可选的url参数将是一件痛苦的事情。如果你只是换个名字,你会过得更好(也更理智)。但是,您的视图函数可能应该允许传入这些内容,否则它们的用途是什么

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路径,但这取决于您。

您是否尝试为这些url设置不同的“名称”?我没有这样做,因为bell图标位于base.html中,所有页面都扩展了这个基,我只能调用一个名称。这个问题不是很清楚。如果您只有一个JS脚本,为什么需要多个URL?尤其是如果他们都做完全相同的事情。这有什么意义?多个url是因为我想让它对所有im上的url都起作用,而js文件url参数只是对url进行了正确的标记..但我无论如何都能让它起作用!谢谢@DanielRosemani它只是连接起来,因为你的Ajax URL不是以斜杠开头的。如果您这样做,url:'/ajax/reload/“,它们都会去同一个地方。
def ajax_change_status(request, param1=None, param2=None):
    ...