我正在尝试使用覆盆子pi为我的arduino创建一个简单的Web界面。我想单击我在html中创建的链接,并将字符串“on”发送到python程序,以便它可以告诉arduino打开。 这是我的python代码
import serial
from flask import Flask, render_template, request
import datetime
app = Flask(__name__)
ser = serial.Serial('/dev/ttyACM0', 9600)
@app.route("/<action>")
def action(action):
print action
#command = ""
#while command != "done":
# command = raw_input("what do you want? ")
if action == "on":
ser.write('1')
elif action == "off":
ser.write('0')
return render_template('index.html', **templateData)
@app.route("/")
def display():
now = datetime.datetime.now()
timeString = now.strftime("%Y-%m-%d %H:%M")
templateData = {
'title' : 'arduino',
'time' : timeString
}
return render_template('index.html', **templateData)
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080, debug=True)
这是我的HTML代码
<!DOCTYPE html>
<head>
<title>{{title}}</title>
</head>
<body>
<p>The time at server is {{time}}</p>
<p>
The LED is currently off (<a href="/on">turn on</a>)
</p>
<body>
</html>
当有人点击链接turn on
时,我希望将字符串打开发送到操作方法,以便它可以从那里获取。相反它的作用是转到/on
目录,这并不奇怪。我到处寻找,无法找到如何做到这一点。这是我第一次使用Flask而且我对python很新,所以如果我完全关闭,请不要太苛刻。
答案 0 :(得分:1)
您可以在采取行动后重定向
from flask import Flask, render_template, request, redirect
@app.route("/<action>")
def action(action):
...
return redirect(url_for('display'))