Google App Engine +验证

时间:2010-12-07 00:25:11

标签: google-app-engine validation relational-database

我正在寻找如何在Google App Engine上进行验证,而我只发现了如何使用Django框架进行验证。好的Django方法还可以,但如果我有一个表单,这个表单有几个表的数据然后??? 我不能这样做:

class Item(db.Model):
    name = db.StringProperty()
    quantity = db.IntegerProperty(default=1)
    target_price = db.FloatProperty()
    priority = db.StringProperty(default='Medium',choices=[
      'High', 'Medium', 'Low'])
    entry_time = db.DateTimeProperty(auto_now_add=True)
    added_by = db.UserProperty()

class ItemForm(djangoforms.ModelForm):
    class Meta:
        model = Item
        exclude = ['added_by']

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write('<html><body>'
                                '<form method="POST" '
                                'action="/">'
                                '<table>')
        # This generates our shopping list form and writes it in the response
        self.response.out.write(ItemForm())
        self.response.out.write('</table>'
                                '<input type="submit">'
                                '</form></body></html>')
    def post(self):
        data = ItemForm(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('/items.html')
        else:
            # Reprint the form
            self.response.out.write('<html><body>'
                                    '<form method="POST" '
                                    'action="/">'
                                    '<table>')
            self.response.out.write(data)
            self.response.out.write('</table>'
                                    '<input type="submit">'
                                    '</form></body></html>')

是否有简单的方法来验证包含来自少数几个表的数据的表单,或者我必须单独编写代码?

2 个答案:

答案 0 :(得分:1)

看起来你正在使用webapp;我建议您查看其他一些“轻量级”表单验证选项。选择一个你喜欢的布局/语法。如果需要,您将能够定义复杂的“嵌套”关系。

答案 1 :(得分:0)

WTForms有一个GAE组件WTForms

  

WTForms现在包括对AppEngine字段的支持以及自动表单生成。表单类可以原样使用,也可以作为扩展表单类的基础,然后可以将非模型相关字段,子表单与其他模型表单混合在一起,以及其他可能性。