1

GoogleAppEngineプログラムに問題があります。私は今数時間それを見つめています、そして解決策が何であるかわかりません。GAEで別の関連する質問「BadValueError:プロパティカテゴリが必要です」を見ましたが、ユーザー変数とUSD変数の両方から「required = True」条件を削除しても、同じエラーが発生します。

私のプログラムは、米ドル通貨からSR通貨への単純な変換を行います。残念ながら、エラーが発生し続けます:BadValueError('プロパティ%sはfloatである必要があります'%self.name)BadValueError:プロパティUSDは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

ローカルサーバーでエラーを再現できません。代わりに、次のように表示されます。

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 に答える
0

本当に奇妙な部分は、USD変数とSR変数の名前を小文字に変更したところ、機能しました。なぜ大文字の米ドルを「不動産の米ドルはフロートでなければならない」と主張したのかわかりませんが、それらをlowercas usdとsrに変更すると、スムーズに実行されました。

于 2012-11-21T11:23:56.047 に答える