我正在尝试使用此代码将数字从html表单打印到文本文档进行存储,但似乎无法正常工作
@app.route("/result",methods = ['POST', 'GET'])
def result():
if request.method == 'POST':
timer = request.form['timer_input']
f = open("timer.txt", "w")
f.write("Water every {} days".format(timer)
templateData = template(text = "timer")
return render_template('timer.html', **templateData)
<form>Set frequencys (e.g. 2 = every 2 days): <br>
<input type ="number" name="timer_input">
<br>
</form>
有谁知道为什么它不起作用?我已经查看了几个地方的替代品,但他们都使用cgi或php而且我对使用它们都不感兴趣
答案 0 :(得分:0)
即使您的初始问题看起来已经解决,但以下是一些建议:
一个地址(视图)更典型的是显示表单和另一个表单 地址以显示表单完成时的结果。
文件写入操作作为单独的函数看起来更安全。您需要关闭该文件,或者更好地使用with
。
您在GET
上没有任何操作,因此可以简化此功能。
以下是考虑到这些想法的代码:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('timer.html')
@app.route("/result", methods= 'POST')
def result():
timer = request.form['timer_input']
log_message = "Water every {} days".format(timer)
screen_message = "Sure, will water every {} days!".format(timer)
save(log_message)
return screen_message
def save(text, filepath='timer.txt'):
with open("timer.txt", "w") as f:
f.write(text)
<强>模板/ timer.html 强>:
<html><body>
<form action = "result" method = "POST">
Set frequencies (e.g. 2 = every 2 days):
<br>
<input type ="number" name="timer_input">
<input type = "submit">
<br>
</form>
</body></html>