1

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

我的程序将美元货币简单转换为 SR 货币。不幸的是,我不断收到错误消息: BadValueError('Property %s must be a float' % self.name) BadValueError: Property USD must be a float

来自我的 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>
4

2 回答 2

0

真正奇怪的部分是,我将 USD 和 SR 变量重命名为小写,并且它起作用了。我不知道为什么它坚持大写美元“财产美元必须是浮动的”,但是当我将它们改为小写的usd和sr时,它运行起来很顺利。

于 2012-11-21T11:23:56.047 回答
0

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

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)))

我在评论中提出的建议解决了语法问题和您的原始问题(只有删除(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('/')
于 2012-11-20T22:17:50.063 回答