2016-07-19 38 views
0

我正在编写一个小型门户网站,它将使用户能够为计算语言学项目注释一些文本,并将其注释保存到文件中。将<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'正在保存中i n文件 - 而不是 - 我想要保存的内容 - 因为它将是注释的结果。

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

回答

1

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

更改按钮,这一点,看看是否有帮助:

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

编辑:说明

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

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

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

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

希望有帮助!

+0

谢谢,它工作得很好!你能否指出我为什么会这样工作的解释,我对Web开发了解不多? –

+1

当然,补充说明。 –

相关问题