谷歌应用引擎 - 如何从HTML表单的输入类型=“文本”获取ListProperty

时间:2010-12-29 23:39:46

标签: html google-app-engine forms google-cloud-datastore listproperty

我有一个应用程序,它通过一个html表单获取一些参数,然后创建一个模型实体。问题是,无论我尝试什么,我都会收到这样的错误:

BadValueError: Property xxx must be a list

这是模型:

 xxx = db.ListProperty(int)

这是用于获取列表的句子:

xxx = self.request.get('xxx')

我认为html表单在我点击提交按钮时返回一个字符串。那么,我如何能够以html格式从输入类型=“文本”中获取列表?如果我写1,2它是不行的,因为不是别的。

python代码类似于helloworld应用程序,其中表单用于在页面上发布问候语,区别在于我需要获取列表而不是文本。

self.response.out.write("""
          <form action="/sign" method="post">
            <div><textarea name="content" rows="3" cols="60"></textarea></div>
            <div><input type="submit" value="Sign Guestbook"></div>
          </form>
        </body>
      </html>""")

class Guestbook(webapp.RequestHandler):
    def post(self):
        greeting = Greeting()

        if users.get_current_user():
            greeting.author = users.get_current_user()

        greeting.content = self.request.get('content')
        greeting.put()
        self.redirect('/')

这是获取用户输入以创建模型实体的最佳方式吗?如何修复它以便获取列表并将其写入模型属性?

2 个答案:

答案 0 :(得分:2)

解决方案非常简单,一旦专家告诉我:)。

tlist = map(lambda x: int(x), self.request.get_all('xxx'))

答案 1 :(得分:0)

您应该将列表放在xxx内,而不是字符串或整数。

也许你想要使用request.get_all方法,而不是get。