사용자가 Google 계정으로 로그인 한 다음 Google 앱 엔진에서 해당 사용자의 프로필을 만들거나 업데이트하는 양식이 있습니다. 나는 새로운 항목의 키로 이메일 주소 (Google의 사용자 정보로 자동으로 채워짐)가 들어있는 양식 필드를 사용하고 싶습니다. 이렇게하면 같은 이메일을 가지고있는 한 동일한 항목이되므로 항목을 쉽게 업데이트 할 수 있습니다. 다음은 내 양식 모델과 내 페이지 게시물이며 방법은 무엇입니까? 어떻게 키를 설정하도록 수정할 수 있습니까?양식 필드를 엔티티 키 Google Apps Engine Python으로 사용합니다.
class Athlete(db.Model):
#fields to be added to the form
norse_key = db.UserProperty()
key_name = norse_key
first_name = db.StringProperty()
last_name = db.StringProperty()
school_class = db.StringProperty()
sex = db.StringProperty()
home_address = db.StringProperty()
city = db.StringProperty()
state = db.StringProperty()
zip = db.IntegerProperty()
residence = db.StringProperty()
SPO = db.IntegerProperty()
cell = db.IntegerProperty
sport_1 = db.StringProperty()
sport_2 = db.StringProperty()
sport_3 = db.StringProperty()
class AthleteForm(djangoforms.ModelForm):
class Meta():
model = Athlete()
class AthleteFormPage(webapp.RequestHandler):
def get(self):
user = users.get_current_user()
self.response.out.write((user))
query = db.GqlQuery("SELECT * FROM Athlete WHERE norse_key = :1", user)
item = None
for item in query:
self.response.out.write("%s,%s<br>" % (item.norse_key,item.first_name))
self.response.out.write('<div style="float:right"><a href="%s">Log Out</a> </div >'% (users.create_logout_url("/")))
self.response.out.write('<html> <body> <a href="/">Submit A Treatment Log</a> <form method="POST" action="/athleteformpage.html"> <table>')
if item != None:
self.response.out.write(AthleteForm(initial={'norse_key':item.norse_key,'first_name':item.first_name}))
else:
self.response.out.write(AthleteForm(initial={'norse_key':user}))
self.response.out.write('</table> <input type="submit"> </form> </body> </html>')
def post(self):
data = AthleteForm(data=self.request.POST)
if data.is_valid():
# Save the data, and redirect to the view page
entity = data.save(commit=False)
entity.added_by = users.get_current_user()
entity.put()
self.redirect('/athletes.html')
else:
# Reprint the form
self.response.out.write('<html><body> <form method="POST" action="/athleteformpage.html"> <table>')
self.response.out.write(data)
self.response.out.write('</table> <input type="submit"> </form></body></html>')
과 같이 정식으로 만들 필요가 있습니다. "그것은 BooleanProperty 여야하며 StringProperty가 아니어야합니다. –
질문이 명확하지 않습니다. db.UserProperty()로 이미이 작업을 수행하고 있지 않습니까? 'db.UserProperty (auto_current_user = True)'로 의도했던 것처럼 작동합니까? 또는'user = users.get_current_user(); user_email = user.email()'? 이치에 맞지 않는 질문에는 대답하기가 어렵습니다. 그 외에도 [사용자는 Google 계정의 이메일 주소를 변경할 수 있습니다.] (http://code.google.com/appengine/docs/python/users/userclass.html#Introduction) 결함있는 전제입니다. –
필드에서 전화를 걸면 드롭 다운 메뉴가 표시됩니다.이 프로젝트는 아직 개발 초기 단계입니다. 그리고이 응용 프로그램은 Google 도메인을 사용하는 대학에서 사용하게 될 것이며, 대학 이메일을 변경하지 않아도 문제가 적용되지 않을 것이지만 나중에 참조 할 수 있도록 알려 주셔서 감사합니다. – marblecatdog