在HTML表单中输入整数时抛出BadValueError

4 投票
1 回答
1097 浏览
提问于 2025-04-17 20:53

我正在用Python创建一个Google App Engine应用程序。为了测试我的应用,我使用HTML表单来输入数据。

在我的表单中,有一行代码:

<tr><td>Age</td><td><input type="number" size="10" name="age"/></td></tr>

而在我的模型类中,有一个属性是这样定义的:

class Person(ndb.Model):
...
age = ndb.IntegerProperty()

当我在本地测试我的应用时,表单可以正常显示,但当我输入年龄的值时,却出现了一个错误信息:BadValueError: Expected integer, got u '23'。我发了一张图片,因为我不知道怎么复制命令提示符的文本。希望这张图片能说明问题。

enter image description here

编辑:这是数据从HTML表单传递的方式。

  # Data taken from the registration form (above) is used to 
  # create a new member.
 class PersonHandler(webapp2.RequestHandler):

 def post(self):
    # need to check this member-name does not exist
    name = self.request.get('name')
    callback = self.request.get('callback')
    member = Member.get_by_id(name)
    if member:           # This member name already exists.
        self.error(409)  # This is the HTTP status code for 'unable to process due to conflict'
    else:
        ...
        a = self.request.get("age")

        member = Member(age=a,...)
        member.put()
        if callback:
            self.response.write(callback + '(' + member.toJSON + ')')
        else:
            self.response.write(member.toJSON())

有人能告诉我我哪里做错了吗?

1 个回答

4

你只需要把获取到的值转换成一个整数就可以了:

    ...
    else:
        ...
        a = int(self.request.get("age"))

撰写回答