2014-08-10 1 views
0

Я новичок в питоне и бутылке, но я пытаюсь разработать простое веб-приложение, которое будет инвентаризировать предметы в коробках, которые получает компания. Использование бутылки Я смог создать форму, которая имеет 2 текстовых поля и одну кнопку «Сохранить». Я сканирую идентификатор окна, и он попадает в текстовое поле1. Затем я просматриваю идентификатор элемента, и он попадает в текстовое поле2. Затем я нажимаю кнопку «Сохранить». Это работает ... но после того, как я нажму «Сохранить», форма будет перезагружена, т. Е. Откроется пустая страница, и мне нужно переместить страницу назад, удалить содержимое из текстового поля1 и сделать это снова, пока я не переключусь на следующий ящик, который начнется с empty box1 и box2 Моя просьба: я хочу, чтобы каждый раз, когда я нажимаю кнопку «Сохранить», он отправлял данные в мою базу данных, но форма оставалась неповрежденной, т.е. не перезагружалась, а содержимое текстового поля1 пусто. Затем я мог просто сканировать следующий элемент и так далее, пока не закончу все предметы. Может ли кто-нибудь помочь мне в этом? Вот как мой код искать сейчас в шаблоне бутылки:как передать значение в html-форму в бутылке?

<form action="/accession" method="GET"> 
     Scan Box: <input type="text" size="18" name="package"> &nbsp &nbsp &nbsp 
     Scan Item: <input type="text" size="13" name="sample"> 
<input type="submit" name="save" value="Save" > 

** я немного изменил форму, и теперь он ведет себя по-другому то, когда я нажимаю на «Сохранить» он остается на той же странице (что ОК), но он опустошает содержимое обоих текстовых полей. Мне нужно, чтобы только одно текстовое поле очищалось, а другое сохраняло содержимое. Как я могу это сделать? Благодаря ** я заметил, что я мог бы использовать «значение атрибута» с «текст» поле .. как это:

Scan Box: <input type="text" value="123" name="package"> 

В моем случае значение «123» должен быть динамичным. У меня есть значение в моем скрипте python, который я хочу заменить на «123», но я не знаю, как передать его в форму. Может кто-нибудь мне помочь? thanks

ответ

2

Вы должны использовать шаблон. Вот the docs для встроенных шаблонов Bottle; Я предпочитаю Jinja2, но вы можете решить, что использовать, как только вы освоили концепцию.

В принципе, вы создадите файл шаблона, который является html, который вы хотите вернуть. Он будет включать в себя что-то вроде этого:

Scan Box: <input type="text" value="{package}" name="package"> 

И ваши функции бутылки (которые вы не отвечали, так что я делаю предположение здесь) будет выглядеть следующим образом:

@route('/myform') 
def submit(): 
    the_package = zzz # get the value however your application chooses 
    return template('form1', package=the_package) # your template file is form1.tpl 

Значения the_package будет автоматически заменен, если в вашем файле шаблона появится {package}.

Пожалуйста, попробуйте примеры шаблонов в документации к бутылке и сообщите нам, если у вас есть еще вопросы.

+0

Спасибо за помощь. Следуя твоему совету, я все настроен сейчас. – susja

+0

Рад это слышать! (Если мой ответ решил вашу проблему, тогда, пожалуйста, «примите» это как таковое. Спасибо!) –

+0

Как насчет чтения в javascript, который вложен в .tpl? {{package}} не будет работать. – Bear