使用 python 将 html 表单输入写入文本文件
Writing html form input to text file using python
我正在尝试使用此代码将数字从 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 而我对使用任何一个都不感兴趣
尽管您最初的问题看起来已经解决,但这里有一些建议:
比较典型的是一个地址(视图)显示一个表格,另一个
地址显示表单完成后的结果。
文件写入操作作为一个单独的函数看起来更安全。您需要关闭文件,或者更好地使用 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)
app.run()
templates/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>
我正在尝试使用此代码将数字从 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 而我对使用任何一个都不感兴趣
尽管您最初的问题看起来已经解决,但这里有一些建议:
比较典型的是一个地址(视图)显示一个表格,另一个 地址显示表单完成后的结果。
文件写入操作作为一个单独的函数看起来更安全。您需要关闭文件,或者更好地使用
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)
app.run()
templates/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>