Google App Engine - как получить ListProperty из ввода формы HTML type="text"

У меня есть приложение, которое принимает некоторые параметры через 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 ответа

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

tlist = map(lambda x: int(x), self.request.get_all('xxx'))

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

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

Другие вопросы по тегам