如何获取当前登录的用户';Django中的用户id?
如何获取当前登录用户的id 在如何获取当前登录的用户';Django中的用户id?,django,django-models,django-authentication,Django,Django Models,Django Authentication,如何获取当前登录用户的id 在models.py中: class Game(models.model): name = models.CharField(max_length=255) owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner') gta = Game.objects.create(name="gta", owner=?) 在视图.py中: class Game(
models.py中
:
class Game(models.model):
name = models.CharField(max_length=255)
owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner')
gta = Game.objects.create(name="gta", owner=?)
在视图.py中
:
class Game(models.model):
name = models.CharField(max_length=255)
owner = models.ForeignKey(User, related_name='game_user', verbose_name='Owner')
gta = Game.objects.create(name="gta", owner=?)
首先确保已将
SessionMiddleware
和AuthenticationMiddleware
中间件添加到MIDDLEWARE\u类
设置中
当前用户
位于请求
对象中,您可以通过以下方式获取它:
def sample_view(request):
current_user = request.user
print current_user.id
request.user
将为您提供一个表示当前登录用户的user
对象。如果用户当前未登录,request.user
将设置为AnonymousUser
的实例。您可以通过以下字段来区分它们:是否经过身份验证
:
if request.user.is_authenticated:
# Do something for authenticated users.
else:
# Do something for anonymous users.
假设您指的是Django,在您看来:
def game(request):
user = request.user
gta = Game.objects.create(name="gta", owner=user)
您可以使用以下代码访问当前登录用户:
request.user.id
我是在ajax视图中写的,但这是一个更广泛的答案,给出了当前登录和注销用户的列表
is_authenticated
属性总是为我的用户返回True
,我想这是意料之中的,因为它只检查匿名用户,但如果你说开发一个聊天应用程序,需要显示登录用户,那么这就没用了
这将检查过期会话,然后根据解码的\u auth\u user\u id
属性确定它们属于哪个用户:
def ajax_find_logged_in_users(request, client_url):
"""
Figure out which users are authenticated in the system or not.
Is a logical way to check if a user has an expired session (i.e. they are not logged in)
:param request:
:param client_url:
:return:
"""
# query non-expired sessions
sessions = Session.objects.filter(expire_date__gte=timezone.now())
user_id_list = []
# build list of user ids from query
for session in sessions:
data = session.get_decoded()
# if the user is authenticated
if data.get('_auth_user_id'):
user_id_list.append(data.get('_auth_user_id'))
# gather the logged in people from the list of pks
logged_in_users = CustomUser.objects.filter(id__in=user_id_list)
list_of_logged_in_users = [{user.id: user.get_name()} for user in logged_in_users]
# Query all logged in staff users based on id list
all_staff_users = CustomUser.objects.filter(is_resident=False, is_active=True, is_superuser=False)
logged_out_users = list()
# for some reason exclude() would not work correctly, so I did this the long way.
for user in all_staff_users:
if user not in logged_in_users:
logged_out_users.append(user)
list_of_logged_out_users = [{user.id: user.get_name()} for user in logged_out_users]
# return the ajax response
data = {
'logged_in_users': list_of_logged_in_users,
'logged_out_users': list_of_logged_out_users,
}
print(data)
return HttpResponse(json.dumps(data))
用于模板内的
这就是我通常在模板中获取当前登录用户及其id的方式
<p>Your Username is : {{user}} </p>
<p>Your User Id is : {{user.id}} </p>
<p>Your Username is : {{user|default: Unknown}} </p>
<p>Your User Id is : {{user.id|default: Unknown}} </p>
您的用户名是:{{user}
您的用户Id是:{{User.Id}
这是我通常在模板中获取当前登录用户及其id的方式
<p>Your Username is : {{user}} </p>
<p>Your User Id is : {{user.id}} </p>
<p>Your Username is : {{user|default: Unknown}} </p>
<p>Your User Id is : {{user.id|default: Unknown}} </p>
您的用户名是:{{user | default:Unknown}
您的用户Id为:{User.Id |默认值:Unknown}
Reference:如果我们想将外键用户id设置为当前登录用户id的型号,该怎么办?您不再需要更新设置。请求来自哪里?链接到参考。可能与@CiroSantilli重复新疆改造中心法轮功六四事件 精确副本