在Django中,如何查看用户的所有属性?

时间:2013-05-13 10:57:58

标签: python django django-models

如果我这样做:

print request.user.is_authenticated()

然后打印出True。然而

print request.user

只是打印用户名,即使'request.user'绝对不仅仅是一个字符串。如何将所有用户属性打印到控制台?

2 个答案:

答案 0 :(得分:5)

有很多方法,例如:

print dir(request.user)

或(这可能是首选)

print request.user.__dict__

或(参见stalk的扩展答案,基本上做__dict__所做的事)

print ["{0}: {1}".format(field.name, getattr(request.user, field.name)) for field in request.user._meta.fields]

或(如果你只是想要方法)

print [attr for attr in dir(request.user) if callable(attr)]

答案 1 :(得分:3)

执行此操作时:

print request.user

调用模型方法__unicode__并打印它返回的内容。要获取模型字段,需要明确访问它:

print request.user.field_name

要迭代所有字段,可以使用此挂钩:

for f in request.user._meta.fields:
    print f.name, getattr(request.user, f.name)