如何将值传递到Bottle中的html表单?

时间:2014-08-10 19:49:16

标签: python html bottle

我是python和Bottle的新手,但我正在尝试开发一个简单的Web应用程序,它将清点公司收到的盒子中的项目。 使用Bottle我能够创建一个包含2个文本框和一个“保存”按钮的表单。我扫描盒子ID,然后进入文本框1。然后我扫描项目ID,它进入文本框2。然后我点击“保存”按钮。 它的工作原理......但是点击“保存”后,表单重新加载,即打开空白页面,我必须向后移动页面,从文本框1中删除内容并再次执行,直到我切换到下一个以空白开头的Box box1和box2 我的要求:我希望每次点击“保存”按钮,它都会将数据提交到我的数据库,但表格保持不变,即没有重新加载,文本框1的内容变空。然后我可以扫描下一个项目,依此类推,直到我完成所有项目。 可以请有人帮助我吗? 以下是我的代码现在在Bottle模板中查找的内容:

<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" >

** 我稍微改变了形式,现在它的行为有所不同,即当我点击“保存”时,它会停留在同一页面上(这是正常的),但它会清空两个文本框的内容。 我需要只清除一个文本框,而另一个文本框保留内容。我怎么能这样做? 谢谢 ** 我注意到我可以在“text”框中使用“value”属性..就像这样:

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

在我的情况下,值“123”应该是动态的。我确实有我的python脚本中的值,我想用“123”替换,但我不知道如何将其传递到表单中。 有人能帮助我吗? 感谢

1 个答案:

答案 0 :(得分:3)

您应该使用模板。以下是Bottle的内置模板the docs;我碰巧更喜欢Jinja2,但是一旦你掌握了这个概念,就可以决定使用哪个。

基本上,您将创建一个模板文件,该文件是您要返回的html。它将包括以下内容:

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

你的Bottle功能(你还没有发布,所以我在这里猜测)会看起来像这样:

@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}的位置。

请尝试使用Bottle文档中的模板示例,如果您有任何其他问题,请告诉我们。