我是Flask的新手,我正在尝试构建一个简单的Web应用程序。基本上,我在主页上有一个文本输入框和一个提交按钮。
单击“提交”后,它会根据输入的文本显示一些结果(目前已在下面的代码中进行了硬编码),还有2个按钮(正/负)将输入的文本添加到特定文件中(或者带有“正”或“负”标签)。
但是,我面临的问题是这两个按钮:它们在单击时没有任何作用。
这是我现在拥有的:
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
return render_template('index.html')
@app.route('/process-data', methods=['GET', 'POST'])
def process_data():
if request.method == 'GET':
return render_template('index.html')
if request.method == 'POST':
# get the text from the form that was filled in
input_text = request.form['text']
# if submit button is clicked
if request.form['submit'] == 'Submit':
final_result = 'stackoverflow is the best'
if request.form['submit'] == 'Positive':
f = open('dataset/dataset.tsv', 'a')
f.write(input_text + '\t' + 'positive')
# if negative button is clicked
if request.form['submit'] == 'Negative':
f = open('dataset/dataset.tsv', 'a')
f.write(input_text + '\t' + 'negative')
# show the result on the page
return render_template('index.html', result=final_result, text=input_text)
<!doctype html>
<form action="/process-data" method="post" role="form">
<label for="text">Text:</label>
<input type="text" name="text" placeholder="Input sentence here">
<input type="submit" name="submit" value="Submit">
</form>
{% if result is not none %}
{{ result }}
<h2>Add to dataset</h2>
<form action="/process-data" method="post" role="form">
<label for="add-dataset">This sentence was:</label>
<input type="submit" name="submit" value="Positive">
<input type="submit" name="submit" value="Negative">
</form>
{% endif %}
</html>
答案 0 :(得分:0)
创建您的/
路由,让它简单地返回索引模板,而不像这样:
@app.route('/', methods=['GET', 'POST'])
def index():
return render_template('index.html')
然后将另一个路由分配给另一个将执行处理的功能。我不会称它为索引,也许是像过程数据这样的东西:
@app.route('/process-data', methods=['GET', 'POST'])
def process_data():
# put the body of your function here
# ...
# ...
# ...
return render_template('index.html', result=final_result, text=input_text)
最后,您只需要相应地更新表单操作即可:
<form action="/process-data" method="post" role="form">
答案 1 :(得分:0)
检查是否已设置配置设置SESSION_COOKIE_SECURE
。如果您在localhost或通过不安全的线路工作,并且已设置SESSION_COOKIE_SECURE=True
,则不会发送任何会话cookie,因此,任何形式,csrf保护和其他各种操作都不会起作用。在这种情况下,请改用SESSION_COOKIE_SECURE=False
。