如何从Django获取用户组?

问题描述 投票:0回答:1

我正在尝试获取 Django 中用户中存在的用户组,但不幸的是在控制台中它显示:

Uncaught ReferenceError: user is not defined
    at 6/:643:33

该函数应该根据用户是否有这些组来重定向用户。

这是我当前的代码:

if (data.includes('The process is done.')) {
alert('Success!.');
setTimeout(function () {
  if (user.groups.filter(name='group1').exists() || user.groups.filter(name='group2').exists()) {
    window.location.href = "{% url 'red' %}";
  } else {
  window.location.href = "{% url 'blue' %}";
  }
  }, 2000);
  }

上面的代码位于成功的 AJAX 函数中。

html django ajax
1个回答
0
投票

获取用户组的一种方法是发送相关的用户信息以及 AJAX 响应,您可以修改 django 视图以在响应中包含用户的组信息,如下所示:


from django.http import JsonResponse
from django.contrib.auth.decorators import login_required


@login_required
def ajax_function(request):
    #your logic goes here

    user_groups = list(request.user.groups.values_list('name', flat=True))
    data = {
        # other informations that you might need
        'message': 'The process is done.',
        'user_groups': user_groups,
    }

    return JsonResponse(data)

现在您可以在 JavaScript 中访问

user_groups

if (data.message === 'The process is done.') {
alert('Success!.');
setTimeout(function () {
  if (data.user.groups.includes('group1') || data.user.groups.includes('group2')){
    window.location.href = "{% url 'red' %}";
  } else {
  window.location.href = "{% url 'blue' %}";
  }
  }, 2000);
  }

希望这对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.