【问题标题】:BadValueError('Property %s must be a float' % self.name) BadValueError: Property USD must be a floatBadValueError('Property %s must be a float' % self.name) BadValueError: Property USD must be a float
【发布时间】:2012-11-20 21:21:34
【问题描述】:

我的 Google App Engine 程序有问题。我已经盯着它几个小时了,不知道解决方案是什么。 我看到了另一个相关问题"BadValueError: Property category is required" on GAE,但即使我从 user 和 USD 变量中删除了“required=True”条件,我也会收到同样的错误。

我的程序将美元货币简单地转换为 SR 货币。 不幸的是,我不断收到错误消息: BadValueError('属性 %s 必须是浮点数' % self.name) BadValueError: 属性 USD 必须是浮点数

我的 main.py 中的代码

import webapp2
from google.appengine.ext import db
from google.appengine.ext.webapp import template

class Convert(db.Model):
    user = db.StringProperty(required=True)
    USD = db.FloatProperty(required=True)
    SR = db.FloatProperty()

class MainHandler(webapp2.RequestHandler):
    def get(self):
        conversion=db.GqlQuery('SELECT * FROM Convert')
        values={'conversion':conversion}
        self.response.out.write(template.render('main.html',values))
    def post(self):
        prog= Convert(user=(self.request.get('userName')),USD=((float)self.request.get('currency'))),SR=((float)(self.request.get('currency')*3.75)))
        prog.put()
        self.redirect('/')

app = webapp2.WSGIApplication([('/', MainHandler)], debug=True)

我的 main.html 中的代码

    <tr><td>{% for a in conversion%}
        <div align="right" lang="ar"><font size="+1" color="#000000"><strong><font color="#009999">{{a.user}}أدخل:</font>
        {{a.USD}}<font color="#990000">م</font> = {{a.SR}}{% endfor %}
    </td></tr>

    <tr><td>
        <form action="" method="post" accept-charset="utf-8">
            <p align="right" dir="rtl"><strong><font color="#003366">أدخل الدولار الأمريكي:</font></strong><input type="text" name="currency" value="" id="currency"></input></p>
            <p align="right" dir="rtl"><strong><font color="#003366">الرجـاء إدخــال اسمـك:</font></strong><input type="text" name="userName" value="" id="userName"></input></p>
            <p align="right"><input type="submit" value="تحويل العملة"></input></p>
        </form>
    </td></tr>

【问题讨论】:

  • 这看起来应该是语法错误,但你能试试float(self.request.get('currency'))而不是((float)self.request.get('currency')))吗?
  • @Dan 我试过了,还是一样的错误。

标签: google-app-engine python-2.7


【解决方案1】:

我无法在本地服务器上重现您的错误,而是得到:

SyntaxError: invalid syntax
Traceback (most recent call last):
  ...snip...
  File "/Users/user/helloworld/main.py", line 16
    prog= Convert(user=(self.request.get('userName')),USD=((float)self.request.get('currency'))),SR=((float)(self.request.get('currency')*3.75)))

我在 cmets 中提出的建议解决了语法问题和您的原始问题(只有删除 (float) 语句才能得到):

def post(self):
  prog= Convert(user=self.request.get('userName'),USD=float(self.request.get('currency')),SR=float(self.request.get('currency'))*3.75)
  prog.put()
  self.redirect('/')

【讨论】:

    【解决方案2】:

    真正奇怪的部分是,我将 USD 和 SR 变量重命名为小写,并且它起作用了。不知道为什么它坚持要大写USD“Property USD must be a float”,但是当我把它们改成小写的usd和sr时,它运行起来很流畅。

    【讨论】:

      猜你喜欢
      • 2022-10-25
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2021-04-29
      • 1970-01-01
      • 2022-07-27
      相关资源
      最近更新 更多