目标是将“姓名”、“心情”变量和日期输入数据存储区。尽管我多次提交 Web 表单,但我在 Datastore 中看到的所有有价值的只是一个看起来像加密的实体密钥和没有数据的访客姓名心情日期索引。
这是表格
名:
选择
好的
坏的
公平的
在 DS Console 中运行它给了我
ameError:未定义名称“访客”
q = Visitor.all()
q = db.GqlQuery("SELECT * FROM Visitor") #in DS Console
results = q.fetch(2)
for p in results:
print "%s" % (p.name)
#DATASTORE v v
class Visitor(db.Model): # index.py
name = db.StringProperty()
mood = db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
class Post(webapp.RequestHandler): #yaris
def get(self):
visitor_db = Visitor()
visitor_db.name = self.request.get("name")
visitor_db.mood = self.request.get("mood")
visitor_db.put()
和 index.yaml:
indexes: # seems like this is OK
- kind: Visitor
properties:
- name: name
- name: mood
- name: date
direction: asc
提交表单时也会在终端中出现 405 错误。
编辑:得到这个工作与以下; 感谢帮助。
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write("""<html><body>
<form action="/" method="post">
# form is here
</body></html> """)
name = self.request.get("name")
name = name.capitalize()
mood = self.request.get("mood")
localtime = time.localtime(time.time())
mon = localtime[1] # MONTH
h = localtime[3] # HOUR
# if/elif statements with %s specifiers follow...still in MainPage class v v
> def post(self):
> name = self.request.get("name")
> name = name.capitalize()
> mood = self.request.get("mood")
> info = Visitor(name = name, mood = mood)
> info.put()
> self.redirect("/index.py")
这会将数据存储在 Datastore 中!现在,我唯一需要解决的问题是让表单响应打印在原始表单页面 (index.py)中,在正确的 div 中,我在表单旁边有浮动。相反,表单提交的响应出现在不同的、未格式化的页面上。我已经使用了 self.redirect 和以下内容,但我需要一些指导如何实现这一点,或者即使我是正确的路径,也要让表单响应打印在表单页面上,而不是在不同的页面上:
创建的处理程序
redirectionHandler = urllib2.HTTPRedirectHandler()
# 2 apply the handler to an opener
opener = urllib2.build_opener(redirectionHandler)
# 3. Install the openers
urllib2.install_opener(opener)
request = urllib2.Request("http://*my url*", #commented out data=urllib.urlencode({'key':'value'}))
response = urllib2.urlopen(request)