2010-12-20 60 views
0

這是我的代碼:如何顯示所有用戶的屬性在Django

def callback(req): 
token = req.session.get('token', None) 
if not token: 
    return render_to_response('callback.html', { 
    'token': True 
    }) 
token = oauth.OAuthToken.from_string(token) 
if token.key != req.GET.get('oauth_token', 'no-token'): 
    return render_to_response('callback.html', { 
    'mismatch': True 
    }) 
token = get_authorized_token(token) 

# Actually login 
obj = is_authorized(token) 
if obj is None: 
    return render_to_response('callback.html', { 
    'username': True 
    }) 
try: user = User.objects.get(username=obj['screen_name']) 
except: user = User(username=obj['screen_name']) 

user.oauth_token = token.key 
user.oauth_token_secret = token.secret 
user.save() 
req.session['user_id'] = user.id 
del req.session['token'] 

s = ''.join('%s: %s </br>' % (a, getattr(user, a)) for a in dir(user)) 
return HttpResponse(s) 

,我想用

s = ''.join('%s: %s </br>' % (a, getattr(user, a)) for a in dir(user)) 
return HttpResponse(s) 

顯示用戶的屬性,

,但我得到一個錯誤:

AttributeError at /twitter/login/callback/ 

Manager isn't accessible via User instances 

所以我能做什麼,

謝謝

回答

0

你應該使用排除一個for循環,找出問題的所在!

我通過User對象循環,並發現它不喜歡getattr(user, '_base_manager')getattr(user, 'objects')

你只是想與用戶對象相關的領域,還是真的所有的Python代碼嗎?

如果你只是想在models.py中定義的字段:

for field in user._Meta.fields: 
    print '%s: %s' % (field.name, field.value_to_string(user)) 

,如果你想所有的目錄做
只是做一個正常的循環神奇。列表推導不會很容易地捕捉異常。

for attr in dir(user): 
    try: 
     print '%s: %s' % (attr, getattr(user, attr)) 
    except Exception, e: 
     print '%s: %s' % (attr, e) 

如果你愛你的列表理解那麼多

def no_exception_getattr(user, attr): 
    try: 
     return getattr(user, attr) 
    except Exception, e: 
     return e 

''.join(['%s: %s' % (x, no_exception_getattr(user, x)) for x in dir(user)]) 
相關問題