Google App Engine - как получить ListProperty из ввода формы HTML type = "text" - PullRequest
0 голосов
/ 30 декабря 2010

У меня есть приложение, которое принимает некоторые параметры через форму HTML, а затем создает объект модели. Проблема в том, что, что бы я ни пытался, я получаю ошибку, подобную этой:

BadValueError: Property xxx must be a list

это модель:

 xxx = db.ListProperty(int)

это предложение используется для получения списка:

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

Я полагаю, что HTML-форма возвращает строку, когда я нажимаю кнопку отправки. Итак, как бы я мог получить список из ввода type = "text" в HTML-форме? Если я напишу 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('/')

Является ли это оптимальным способом получения пользовательского ввода для создания сущности модели и как я могу исправить это, чтобы он получал список и записывал его в атрибуты моделей?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

Решение было очень простым, однажды эксперт показал мне:)

tlist = map(lambda x: int(x), self.request.get_all('xxx'))
0 голосов
/ 30 декабря 2010

Вы должны поместить списки в xxx, а не в строки или целые числа.

Возможно, вы захотите использовать метод request.get_all вместо get.

...