Я создаю простое веб-приложение для управления светодиодами в моем Raspberry Pi.
У меня есть вызов маршрута и функции для них, например:
@app.route("/<pin>/<action>")
def action(pin, action):
if pin == "pin1" and action == "on":
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT)
GPIO.output(3, GPIO.LOW)
if pin == "pin1" and action == "off":
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT)
GPIO.output(3, GPIO.HIGH)
Так как по умолчанию Flask считает это методом GET, я использую href с тегом привязки в HTML-файле для передачи булавкии действие.
<button><a href="/pin1/on">ON</a></button>
<button><a href="/pin2/off">Off</a></button>
Это нормально работает для включения и выключения светодиода, но меняет URL после нажатия на кнопку.например, http://0.0.0.0/pin1/on и http://0.0.0.0/pin1/off
Я не хочу, чтобы URL-адрес изменялся, поэтому предлагается метод POST с элементом формы, использующим action и name in button.Итак, я попытался следовать, но это не работает.Коды Python:
@app.route("/pinstatus", methods=['POST'])
def pinstatus():
if request.form['lighton']:
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT)
GPIO.output(3, GPIO.LOW)
if request.form['lightoff']:
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3, GPIO.OUT)
GPIO.output(3, GPIO.HIGH)
Коды HTML
<form action="{{ url_for('pinstatus') }}" method="POST">
<button name="lighton">ON</button>
<button name="lightoff">Off</button>
</form>
Мне нужна помощь в вышеуказанной ситуации.Есть ли обходной путь?Заранее спасибо.