Как сделать так, чтобы кнопка HTML активировала скрипт Python? - PullRequest
0 голосов
/ 26 февраля 2019

Мой проект состоит в том, чтобы пользователь использовал веб-сайт для управления камерой Raspberry Pi.Кнопка на сайте запустит скрипт для фотографирования на камеру.Скрипт отлично работает как собственный exe, но когда я пытаюсь включить его в код app.py, он не работает.Я пробовал разные решения безрезультатно.Я чрезвычайно новичок в linux / html / python, поэтому я много здесь борюсь.

КОД HTML:

<div class="container">

<div><img src="https://scontent-dfw5-1.xx.fbcdn.net/v/t1.15752-9/52914705_308217033137888_3861578789158912000_n.png?_nc_cat=101&_nc_ht=scontent-dfw5-1.xx&oh=b067e9981fe2bbf6903d034ea33108bf&oe=5D1E4F7C" alt="Logo" height="40%" width="40%">

<br><br> <p>Thank you for using Photobooth Pi! 
<br>Click the button below to start a countdown.</p>

<form action="/pic" method="POST">
    <input type="submit" value="Take a pic">
</form>

</div>            
<div class="footer">
    <p><strong> COPYRIGHT © 2019 PHOTOBOOTH PI. ALL RIGHTS RESERVED.</strong></p>
</div>

КОД PYTHON / FLASK:

from flask import Flask, render_template
import time
import picamera

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/pic', methods=['GET', 'POST'])
def pic():
    "camera = picamera.PiCamera()"
    "camera.rotation = 90"
    "camera.stat_preview()"
    "time.sleep(5)"
    "camera.capture('tester.jpg')"
    "camera.stop_preview()"
    return        

if __name__ == '__main__':
    #Pi's IP Address
    app.run(debug=True, host='10.0.83.149')

Кнопка не работает, она выводит меня на экран отладки.Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 26 февраля 2019

Код хорошо написан в целом.Ошибка, с которой вы сталкиваетесь, происходит из-за того, что ваша функция не возвращает никакого ответа.Или, если быть более точным, ваша pic функция заканчивается неявным return None, который не работает с Flask и генерирует ошибку.Попробуйте вернуть что-нибудь, например: return "ok"


РЕДАКТИРОВАТЬ

В соответствии с сделанными разъяснениями и моим последним комментарием, вот подход решенияк вашей проблеме:

@app.route('/pic', methods=['GET', 'POST'])
def pic():
    os.system("sudo python pic.py")
    return redirect(url_for('index'))  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...