2012-05-13 4 views
3

私はこの機能を試していますが、何かが間違っています。私は "John"という名前を保存しましたが、ジョンをusername_に渡してcheck_userと呼ぶと、名前がGoogleデータストアに保存されていなくても、出力は常にreturn resultsになります。どうして?query.filterとgql

def check_user(self, username_): 
    query = db.Query(Registrations) 
    results = query.filter('username =', username_) 
    if results: 
     return results 

user_username = self.request.get('username') 
check_username_valid = self.check_user(user_username) 

if not check_username_valid: 
    error_username_exists="Username already exists" 

GQLの場合、どのように変数username_をクエリに渡すことができますか?以下のような:

qr = db.GqlQuery("Select * from Registrations Where username = ?????") 

答えて

4

結果は、クエリオブジェクトではない結果であり、あなたはそれらのすべてを返すために、単一の結果またはquery.filter('username =', username_).fetch()を返すようにquery.filter('username =', username_).get()を呼び出す必要があります。

+1

おかげで、学習のために、どのように変数をクエリに渡すのですか?これはある種の注射を引き起こす可能性がありますか? –

+1

私はそのシンプルな文字列の建物だと思っています。 –

+1

いいえ!文字列連結を使用して引数を挿入しないでください! GQLドキュメントに記載されているように、パラメータ置換( ":1"、 ":2"など)を使用してください。 –

関連する問題