在Flask应用中添加第二个文本区域
我有一个简单的Flask应用程序。我尝试在这个应用中添加第二个文本框,以便增加一个新功能。我把第一个文本框完全复制了一遍,但当我在下方的框里点击提交时,收到了以下信息:
错误请求 浏览器(或代理)发送了一个服务器无法理解的请求。
这是我修改后的代码,唯一的变化就是添加了一个和第一个完全一样的第二个文本框。看起来没问题,但当我点击提交时就出错了,即使我改变了文本框的名称。我不明白服务器是怎么区分这两个文本框的。这里是正在修改的应用。考虑到这个问题,它的复杂程度也就那样。谢谢!
<!DOCTYPE html>
<html>
<head>
<title>Ven Diagram</title>
<style type=”text/css”>
#pagearea {
width: 100%;
margin: 0 auto;
}
textarea {
width: 48%;
padding: 0 0 0 0;
margin: 0 0 0 0;
}
input {
width: 80px;
height: 40px;
}
</style>
</head>
<body>
<div id="pagearea">
<h1>
This program allows you to match text. The text must be unicode.
Enter two text blocks to compare:
</h1>
<form action="/" method="post">
<textarea name="A" cols="100" rows="20"></textarea>
<textarea name="B" cols="100" rows="20"></textarea>
<br />
<input type="submit" value="Execute" />
</form>
</div>
<div id="pagearea">
<h1>
This will give add and subtract permutations for numbers.
</h1>
<form action="/" method="post">
<textarea name="A" cols="100" rows="20"></textarea>
<br />
<input type="submit" value="Execute" />
</form>
</div>
{% with messages = get_flashed_messages() %}
{% if messages %}
Results:
<pre>
{% for message in messages %}
{{ message }}
{% endfor %}
</pre>
{% endif %}
{% endwith %}
</body>
</html>
这是Python代码:
#!flask/bin/python
import flask, flask.views
import os
import urllib
app = flask.Flask(__name__)
app.secret_key = "REDACTED"
class View(flask.views.MethodView):
def get(self):
return flask.render_template('index.html')
def post(self):
A = flask.request.form['A']
B = flask.request.form['B']
A = urllib.unquote(unicode(A))
B = urllib.unquote(unicode(B))
C = A.split()
D = B.split()
Both = []
for x in C:
if x in D:
Both.append(x)
for x in range(len(Both)):
Both[x]=str(Both[x])
Final = []
for x in set(Both):
Final.append(x)
MissingA = []
for x in C:
if x not in Final and x not in MissingA:
MissingA.append(x)
for x in range(len(MissingA)):
MissingA[x]=str(MissingA[x])
MissingB = []
for x in D:
if x not in Final and x not in MissingB:
MissingB.append(x)
for x in range(len(MissingB)):
MissingB[x]=str(MissingB[x])
#flask.flash("A:")
#flask.flash(A)
#flask.flash("B:")
#flask.flash(B)
#flask.flash("C:")
#flask.flash(C)
#flask.flash("D:")
#flask.flash(D)
flask.flash("Words in Both:")
flask.flash(Final)
flask.flash("Words in First Box Only:")
flask.flash(MissingA)
flask.flash("Words in Second Box Only:")
flask.flash(MissingB)
return self.get()
app.add_url_rule('/', view_func=View.as_view('main'), methods=['GET', 'POST'])
app.debug = True
if __name__ == "__main__":
# Bind to PORT if defined, otherwise default to 5000.
port = int(os.environ.get('PORT', 5000))
app.run(host='0.0.0.0', port=port)