提问人:dawn bringer 提问时间:10/23/2023 更新时间:10/23/2023 访问量:45
如何从 Django 获取用户组?
How to get user groups from Django?
问:
我正在尝试获取 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 函数中。
答:
0赞
Kiarash Gh
10/23/2023
#1
获取用户组的一种方法是将相关的用户信息与 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);
}
我希望这对你有所帮助。
评论
0赞
dawn bringer
10/23/2023
是的,这帮助很大。我不得不做一些微调,但我设法让它工作。:)
评论
user
在 JavaScript 中是未知的:Django 是一个后端框架,它在服务器端渲染数据。JavaScript 对模型、视图等一无所知。它只是得到了一个HTTP响应。True
False