Python Flask WTForms - 根据用户输入附加文件
Python Flask WTForms - appending files based on user input
我在查找相关信息时遇到了一些困难:
我为此使用 FLASK 和 Python。
我希望用户以 HTML 形式输入一些文本,并在提交后将文本发送到 python 和 create/append 文件。 (WPA_SUPPLICANT) 最终将用户连接到无线网络。
请帮我解决此操作的烧瓶代码。
这是我能找到的最接近的东西!我不知道这段代码的模板应该是什么样子。
from flask import Flask, render_template, request, redirect, url_for
import datetime
app = Flask(__name__)
@app.route("/")
def hello():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
f=open('/boot/wpa_supplicant.conf','r')
fp=f.read()
templateData = {
'title' : 'HELLO!',
'time': timeString,
'WPA': fp
}
f.close()
return render_template('main.html', **templateData)
@app.route('/data', methods=['POST'])
def handle_data():
newWPA=request.form['indexMain']
print newWPA
f=open('/boot/wpa_supplicant.conf','w')
f.write(newWPA)
f.close
return redirect(url_for('hello'))
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)
请指教!谢谢。
处理简单表单是 Flask docs and quickstart 的突出特点。使用 request.form
访问表单数据。使用 WTForms 更简单,并且在 [docs] 中也有清楚的解释。
project/app.py
:
from flask import Flask, request, redirect, url_for
from flask_wtf import Form
from wtforms.fields import PasswordField
from wtforms.validators import InputRequired
app = Flask(__name__)
class WifiForm(Form):
password = PasswordField(validators=[InputRequired()])
@app.route('/wifi-password', methods=['GET', 'POST'])
def wifi_password():
form = WifiForm()
if form.validate_on_submit():
password = form.password.data
with open('/boot/wpa_supplicant.conf', 'w') as f:
f.write('valid conf file with password')
return redirect(url_for('index'))
return render_template('wifi_password.html', form=form)
project/templates/wifi_password.html
:
<html>
<head>
<title>WiFi Password</title>
</head>
<body>
<form method="POST">
{{ form.hidden_tag() }}
{{ form.password }}
<input type="submit"/>
</form>
</body>
</html>
我在查找相关信息时遇到了一些困难:
我为此使用 FLASK 和 Python。 我希望用户以 HTML 形式输入一些文本,并在提交后将文本发送到 python 和 create/append 文件。 (WPA_SUPPLICANT) 最终将用户连接到无线网络。
请帮我解决此操作的烧瓶代码。 这是我能找到的最接近的东西!我不知道这段代码的模板应该是什么样子。
from flask import Flask, render_template, request, redirect, url_for
import datetime
app = Flask(__name__)
@app.route("/")
def hello():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
f=open('/boot/wpa_supplicant.conf','r')
fp=f.read()
templateData = {
'title' : 'HELLO!',
'time': timeString,
'WPA': fp
}
f.close()
return render_template('main.html', **templateData)
@app.route('/data', methods=['POST'])
def handle_data():
newWPA=request.form['indexMain']
print newWPA
f=open('/boot/wpa_supplicant.conf','w')
f.write(newWPA)
f.close
return redirect(url_for('hello'))
if __name__ == "__main__":
app.run(host='0.0.0.0', port=80, debug=True)
请指教!谢谢。
处理简单表单是 Flask docs and quickstart 的突出特点。使用 request.form
访问表单数据。使用 WTForms 更简单,并且在 [docs] 中也有清楚的解释。
project/app.py
:
from flask import Flask, request, redirect, url_for
from flask_wtf import Form
from wtforms.fields import PasswordField
from wtforms.validators import InputRequired
app = Flask(__name__)
class WifiForm(Form):
password = PasswordField(validators=[InputRequired()])
@app.route('/wifi-password', methods=['GET', 'POST'])
def wifi_password():
form = WifiForm()
if form.validate_on_submit():
password = form.password.data
with open('/boot/wpa_supplicant.conf', 'w') as f:
f.write('valid conf file with password')
return redirect(url_for('index'))
return render_template('wifi_password.html', form=form)
project/templates/wifi_password.html
:
<html>
<head>
<title>WiFi Password</title>
</head>
<body>
<form method="POST">
{{ form.hidden_tag() }}
{{ form.password }}
<input type="submit"/>
</form>
</body>
</html>