0

HTMLフォームを介していくつかのパラメーターを取得し、モデルエンティティを作成するアプリケーションがあります。問題は、私が何をしようとしても、次のようなエラーが発生することです。

BadValueError: Property xxx must be a list

これはモデルです:

 xxx = db.ListProperty(int)

これは、リストを取得するために使用される文です。

xxx = self.request.get('xxx')

送信ボタンを押すと、htmlフォームが文字列を返すと思います。では、html フォームの input type="text" からリストを取得するにはどうすればよいでしょうか? 私が 1,2 と書いた場合、それは大丈夫ではありません。

Python コードは、フォームを使用してページに挨拶を投稿する helloworld アプリケーションに似ています。違いは、テキストではなくリストを取得する必要があることです。

self.response.out.write("""
          <form action="/sign" method="post">
            <div><textarea name="content" rows="3" cols="60"></textarea></div>
            <div><input type="submit" value="Sign Guestbook"></div>
          </form>
        </body>
      </html>""")

class Guestbook(webapp.RequestHandler):
    def post(self):
        greeting = Greeting()

        if users.get_current_user():
            greeting.author = users.get_current_user()

        greeting.content = self.request.get('content')
        greeting.put()
        self.redirect('/')

これは、ユーザー入力を取得してモデル エンティティを作成する最適な方法ですか? リストを取得してモデル属性に書き込むように修正するにはどうすればよいですか?

4

2 に答える 2

2

専門家が私に見せたら、解決策は非常に簡単でした:)

tlist = map(lambda x: int(x), self.request.get_all('xxx'))
于 2010-12-30T13:46:18.740 に答える
0

xxx文字列や整数ではなく、内にリストを配置する必要があります。

get の代わりにrequest.get_allメソッドを使いたいと思うかもしれません。

于 2010-12-30T01:29:42.653 に答える