使用Bottle将<textarea>的内容保存到文件

时间:2016-07-19 14:17:26

标签: python html bottle

&lt; p&gt;我正在编写一个小型门户网站,用户可以为计算语言学项目注释一些文本,并将注释保存到文件中。&lt; / p&gt; &lt; p&gt;我无法保存修改过的文字。&lt; / p&gt; &lt; p&gt;我的页面是:&lt; / p&gt; 来自瓶子导入模板的&lt; pre&gt;&lt; code&gt; 从项目导入应用程序 从瓶子进口请求 来自瓶子导入重定向 随机导入 @ app.route( '/') def index():     notices ='这是StackOverflow的占位符文本'     返回模板('annotator / index',package = notices) @ app.route('/ annotator / submit',method = ['GET']) def submit():     使用open('output.txt','w')作为outfile:         package = str(request.GET.get('package'))         outfile.write(STR(包))         重定向( '/') &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;我的页面布局为:&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt;!doctype html&gt;  &LT; HEAD&GT;      &lt; link rel =“stylesheet”type =“text / css”href =“/ css / style.css”&gt;      &lt; title&gt;我的应用&lt; / title&gt;  &LT; /头&GT;  &LT;身体GT;      &lt; div class =“page”&gt;          &lt; h1&gt; NM Annotator Demo V 0.1&lt; / h1&gt;          如果包不是'',则为%:       &lt; form action ='annotator / submit',method =“GET”&gt;     &lt; textarea name =“package”ROWS = 20 COLS = 70&gt; {{package}}&lt; / textarea&gt;     &lt; td&gt;&lt; INPUT TYPE = SUBMIT name =“package”VALUE =“Submit”&gt;&lt; / td&gt;      &LT; /形式&GT;          %结束          %包括     &LT; / DIV&GT; &LT; /体&GT; &LT; /代码&GT;&LT; /预&GT; &LT p为H.;&LT; / p为H. &lt; p&gt;提交页面为:&lt; / p&gt; &lt; pre&gt;&lt; code&gt;&lt; form action =“annotator / submit”method =“post”&gt; &LT; DL&GT; 谢谢 &LT; / dl的&GT; &LT; /形式&GT; %rebase布局/布局 &LT; /代码&GT;&LT; /预&GT; &lt; p&gt;但是,只有“提交”这个词被保存在文件中 - 而不是我要保存的内容 - 因为它将是注释的结果。 &LT; / p为H. &lt; p&gt;这是我的第一个网络应用,我有点困惑。&lt; / p&gt;

1 个答案:

答案 0 :(得分:1)

您的textarea和提交表单项都已命名为&#34; package&#34;。

将按钮更改为此按钮,看看是否有帮助:

<INPUT TYPE=SUBMIT name="submit" VALUE="Submit">

编辑:解释

具有两个具有相同名称的表单项的问题是您的应用程序在查询字符串上同时接收它们。例如,

http://yourserver.com/annotator/submit?package=sometext&package=Submit

在您的应用中,您可以有效地获取查询参数的字典,它看起来像{'package': 'sometext'} {'package': 'Submit'}。你得到哪一个完全取决于应用程序(Bottle),但最有可能的实现 - 按顺序处理查询args - 会导致第二个值优先,因为它会覆盖第一个值。

大多数Web框架都提供了获取给定名称的所有查询参数的方法;在瓶子里,它是request.query.getall。因此request.query.getall('package')将返回['sometext', 'Submit']。但在你的情况下,首先避免名称冲突更有意义,而不是保留它然后检索多个值。

希望有所帮助!