2011-01-15 13 views
0
from google.appengine.api import users 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 

class MainPage(webapp.RequestHandler): 
    def get(self): 
     user = users.get_current_user() 

     if user: 
      self.response.headers['Content-Type'] = 'text/plain' 
      self.response.out.write('Hello, ' + user.nickname()) 
     else: 
      self.redirect(users.create_login_url(self.request.uri)) 

application = webapp.WSGIApplication(
            [('/', MainPage)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

私は、この行がどのように機能するかを理解していない:どうすれば条件付きでPythonで動作しますか?

if user: 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('Hello, ' + user.nickname()) 
    else: 
     self.redirect(users.create_login_url(self.request.uri)) 

私はブール値を返す)(users.get_current_userを推測していますか?それでは、どうすれば.nickname()メソッドを得ることができますか?

ガイダンスをありがとう。

+2

型強制は、PHP、JavaScriptなどと同様です。 – BoltClock

答えて

8

userが実際のオブジェクトかNoneかを基本的に確認します。 Noneの場合、コードはelseブロックに入り、「ログインの作成」ページにリダイレクトされます。

+0

私のC#-lingoは申し訳ありませんが、 "Null"と同じです。したがって、ユーザー変数がnullであるかどうかを確認していますか?しかし、その場合、なぜそれがそのブランチに入り、それがnullの場合にメソッドにアクセスするのでしょうか? –

+0

実際、 'None'は他の言語では' null'のPythonに相当します。 –

+1

'None'はPythonでは偽の値と見なされます。*したがって、' user'が 'None'の場合、' else: 'ブランチが採用されます。 – Amber

3

users.get_current_user()がオブジェクトを返すと思われます。現在のユーザーがいない場合はNoneとなります。条件文では、PythonはNoneFalseと解釈します。

このようにNoneのテストは悪い習慣です。空のリスト[]のようなものもFalseに評価されます。代わりに、コードは次のように見えるように変更する必要があります。

if user is not None: 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('Hello, ' + user.nickname()) 
    else: 
     self.redirect(users.create_login_url(self.request.uri)) 
2

users.get_current_user()戻りユーザーオブジェクトまたはなしのユーザーがログインしていない場合は、変数値のようなNoneの場合は、Pythonで確認することができる:。

a = None 
if not a: 
    print "a values is None" 
1

ユーザーオブジェクトを返します。ユーザーオブジェクトがない場合は、Noneとなります。 NoneはPythonに相当するNULLのようなものであり、条件付きではfalseと評価されます。

関連する問題