Google app engine 向GAE数据库类添加方法

Google app engine 向GAE数据库类添加方法,google-app-engine,Google App Engine,我在和盖伊鬼混。我想将数据库对象放在一个文件中,然后从另一个文件调用它。下面是DB对象: import webapp2 import os import jinja2 import json import logging import main from google.appengine.ext import db class User(db.Model): user_name = db.StringProperty(required = True) hashed_p

我在和盖伊鬼混。我想将数据库对象放在一个文件中,然后从另一个文件调用它。下面是DB对象:

import webapp2
import os
import jinja2
import json
import logging
import main 



from google.appengine.ext import db


class User(db.Model):
    user_name = db.StringProperty(required = True)
    hashed_password = db.StringProperty(required = True)
    email = db.EmailProperty(required = True)
    created_dttm = db.DateTimeProperty(auto_now_add = True)
    last_modified = db.DateTimeProperty(auto_now = True)
    coords = db.GeoPtProperty(required = False)


    # def as_dict(self):
        # time_fmt = '%c'
        # d = { 
                # 'subject':self.subject,
                # 'content':self.content,
                # 'created':self.created_dttm.strftime(time_fmt),
                # 'last_modified': self.last_modified.strftime(time_fmt)
            # }
        # return d  

    def isValueUnique(self,column,value):
        result = None
        q = User.all()
        q.filter(column, value)
        result = q.get()
        return result
我无法实例化数据库,因为它认为我正在尝试存储数据

我想从另一个文件调用isValueUnique方法,如下所示:

import webapp2
import os
import jinja2
import json
import logging
import main 
import database
import validation

from google.appengine.ext import db



class SignUp(main.Handler):
    def post(self):
        user_username = self.request.get("username")
        user_email = self.request.get("email")
        user_pass = self.request.get("password")
        user_verify = self.request.get("verify")
        valid = validation.Valid()
        error1=""
        error2=""
        error3=""
        error4=""


        q = database.User.all()
        q.filter("username =", user_username)
        result = q.get()
        if result:
            error1="Username already taken"
        if (not valid.valid_user(user_username)) and (not error1):
            error1 = "Enter a valid username"
        if not valid.valid_password(user_pass):
            error2 = "Enter a valid password"
        if not valid.valid_pass_match(user_pass,user_verify):
            error3 = "Passwords must match"

        # Email Validation
        email=valid.valid_email(user_email)
        if not email:
            error4 = "Invalid email"
            email=""
        elif not database.User.isValueUnique("email",email):
            error4 = "Email already in use, please sign in"
            email=""
我得到这个错误: elif not database.User.isValueUnique(“电子邮件”,电子邮件):

TypeError:必须以用户实例作为第一个参数调用未绑定的方法isValueUnique()(改为获取str实例)


我不能像我已经说过的那样实例化用户。这附近的工作是什么

database.User.isValueUnique(“email”,email)

这正试图调用
数据库上的方法。User
类,但
isValueUnique
是一个实例方法

如果您使用
@staticmethod
装饰
isValueUnique
,您将走得更远


你想在哪里实例化一个
用户

这让我走得更远,现在我得到了一个参数错误:elif not database.User.isValueUnique(“email”,email):TypeError:isValueUnique()在第二个文件中正好取了3个参数(给定2个),一旦我验证了我想要存储数据,我将实例化用户。我正试图在第一个文件中放入一些验证函数,这就是问题的根源。我意识到我需要避免传入self,因为该方法是静态的。谢谢你的帮助,我需要复习Python的类结构,我已经至少3年没有弄乱它了。