【问题标题】:Saving the content of a <textarea> to file with Bottle使用 Bottle 将 <textarea> 的内容保存到文件中
【发布时间】:2016-07-21 23:09:38
【问题描述】:

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

我无法保存修改后的文本。

我的页面是:

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

但是,文件中只保存了“提交”一词 - 而不是文件的内容 - 这是我想要保存的内容,因为它将是注释的结果。

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

【问题讨论】:

    标签: python html bottle


    【解决方案1】:

    您的 textarea 和您的提交表单项都被命名为“package”。

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

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

    编辑:解释

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

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

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

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

    希望有帮助!

    【讨论】:

    • 谢谢,效果很好!您能否解释一下为什么会这样,我对 Web 开发知之甚少?
    • 当然,已添加说明。
    猜你喜欢
    • 2011-10-21
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多