我目前正在模板中使用dajaxice调用,我希望能够在我的dajax调用的python函数中检索当前登录的用户。
我知道dajax将'request'参数传递给包含会话ID的python函数,但是我没有运气确定变量'request'的类型。我已经尝试将其转换为字符串,将其解码为JSON字符串以及其他多种方法。
我希望能够做的就是找到当前登录的用户在dajax调用的python函数中,而不是从实际模板中传入它,因为这在安全方面是不可靠的。
我的相关代码的细分版本:
Dajax Call:
Dajaxice.fortura_test.rbac_test(rbac_callback,{});
rbac_test():
@dajaxice_register
def rbac_test(request):
import re;
from django.contrib.sessions.models import Session
from django.contrib.auth.models import User
request_string = str(request);
request_list = [];
for x in request_string:
request_list.append(x);
request_string = ''.join(request_list);
m = re.match(r"'sessionid'\: '([A-Za-z0-9]+)'",request_string);
if m is not None:
session_key = m.group(0);
session = Session.objects.get(session_key=session_key)
uid = session.get_decoded().get('_auth_user_id')
user = User.objects.get(pk=uid)
return user.id
else:
return 'No match';
我目前使用的上述方法并不常用,但我觉得应该有一种比我现在接近这个方法更好的方法。
任何帮助将不胜感激。
答案 0 :(得分:1)
如果这是正常的Django视图,那么request
是Django的HTTPRequest object,您可以使用request.user
获取当前登录的用户,这将返回contrib.auth.models.User
个实例(您可以确保使用request.user.is_autenticated()
)