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.