将 a 的内容保存到<textarea>与瓶子一起文件



我正在编写一个小型门户网站,它将使用户能够为计算语言学项目注释一些文本,并将注释保存到文件中。

我在保存修改后的文本时遇到问题。

我的页面是:

from bottle import template  
from project import app
from bottle import request
from bottle import redirect
import random

@app.route('/')
def index():
    notices = 'This is a placeholder text for StackOverflow'
    return template('annotator/index', package=notices)

@app.route('/annotator/submit', method=['GET'])
def submit():
    with open('output.txt', 'w') as outfile:
        package = str(request.GET.get('package'))
        outfile.write(str(package))
        redirect('/')

我的页面布局是:

<!doctype html>
 <head>
     <link rel="stylesheet" type="text/css" href="/css/style.css">
     <title>My App</title>
 </head>
 <body>
     <div class="page">
         <h1>NM Annotator Demo V 0.1</h1>
         % if package is not '':
      <form action='annotator/submit', method="GET">
    <textarea name="package" ROWS=20 COLS=70>{{package}}</textarea>
    <td><INPUT TYPE=SUBMIT name="package" VALUE="Submit"></td>
     </form>
         %end
         %include
    </div>
</body>

提交页面为:

<form action="annotator/submit" method="post">
<dl>
Thank you
</dl>
</form>
%rebase layout/layout

但是,文件中只保存了单词"submit",而不是的内容,这是我想要保存的内容,因为这将是注释的结果。

这是我的第一个网络应用程序,我有点困惑。

您的文本区域和提交表单项都命名为"package"。

把你的按钮改成这个,看看这是否有帮助:

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

编辑:解释

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

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

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

大多数web框架都公开了一种获取给定名称的所有查询参数的方法;在Bottle中,它是request.query.getall。因此request.query.getall('package')将返回['sometext', 'Submit']。但在您的情况下,首先要避免名称冲突,而不是保留名称然后检索多个值。

希望能有所帮助!

最新更新