Google app engine 向GAE数据库类添加方法
我在和盖伊鬼混。我想将数据库对象放在一个文件中,然后从另一个文件调用它。下面是DB对象: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
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年没有弄乱它了。