我正在尝试获取 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 函数中。
获取用户组的一种方法是发送相关的用户信息以及 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);
}
希望这对您有帮助。