如何将当前用户的属性转换为dict格式[重复]

Posted

技术标签:

【中文标题】如何将当前用户的属性转换为dict格式[重复]【英文标题】:How to get current user's properties into dict format [duplicate] 【发布时间】:2019-08-28 03:05:33 【问题描述】:

如何将当前用户的属性转换为如下所示的 dict 格式...我尝试了 request.user.__dict__request.user.__class__.__dict__ 但没有提供该数据


    '_state': < django.db.models.base.ModelState object at 0x7fa2c8a14da0 > ,
    'id': 1,
    'password': 'gVFDqqWHxJhnrkyYANJb',
    'last_login': None,
    'is_superuser': False,
    'username': 'ualexander',
    'first_name': 'Valerie',
    'last_name': 'Jones',
    'email': 'gonen@yahoo.com',
    'is_staff': False,
    'is_active': True,
    'date_joined': datetime.datetime(2019, 4, 6, 10, 52, 24, 142211, tzinfo = < UTC > )

views.py

  def dashboard_view(request):
    print(request.user.__dict__)

我的输出

'_setupfunc': <function AuthenticationMiddleware.process_request.<locals>.<lambda> at 0x7fe71c6bfea0>, '_wrapped': <User: nitin>

【问题讨论】:

请包含您的代码和输出。 我已经粘贴了@glhr 【参考方案1】:

你可以这样做。

request.user.__class__.objects.filter(pk=request.user.id).values().first()

它将像这样返回示例输出

'id': 1, 'last_login': datetime.datetime(2019, 4, 5, 10, 44, 19, 110212, tzinfo=<UTC>), 'is_superuser': True, 'username': 'example', 'first_name': 'first', 'last_name': 'last', 'is_staff': True, 'is_active': True, 'date_joined': datetime.datetime(2019, 4, 5, 9, 31, 16, 736841, tzinfo=<UTC>), 'created_at': datetime.datetime(2019, 4, 5, 9, 31, 16, 962971, tzinfo=<UTC>), 'modified_at': datetime.datetime(2019, 4, 5, 9, 31, 16, 962992, tzinfo=<UTC>), 'deleted_at': None, 'is_deleted': False, 'user_id': 1, 'password': 'pbkdf2_sha256$150000$JDcvyHbn1aFI$8gzgVZP/+bvZVQ/OISSF/+BJcJuAJE7zGU4rpBVpA8M=', 'email': 'examle@gmail.com', 'member_from': datetime.date(2019, 1, 1), 'phone_number': '011111111'

更新: 您想获取对象作为请求用户的字典。 在 django request.user 中不给你数据作为字典格式 为了得到你想要的结果,你需要做一些棘手的任务。

request.user.__class__.objects.filter(pk=request.user.id).values().first()

这里request.user.__class__ 是模型名称的结果,然后用当前用户过滤。

【讨论】:

我不使用 Django,但 .__class__.objects.values() 看起来很麻烦。这实际上是正确的方法吗? 我用@Nikhil 和@roganjosh 的一些解释更新了我的答案

以上是关于如何将当前用户的属性转换为dict格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将dict列表转换为pandas中的行[重复]

一种将当前日期时间转换为 ISO 8601 格式的优雅方法 [重复]

将 DataFrame 转换为 dict [重复]

将dict的重复键:值对转换为父母

将Dataframe转换为dict列表太慢[重复]

PHP将格式化日期转换为unixtime [重复]