我想创建一个在远程机器(树莓派 0 2w 板)上运行的烧瓶应用程序,以从我本地机器(我的电脑)上的网页查看和配置相机(插入树莓上的 USB)。
这是我的 python 脚本:
import picture
from flask import Flask, redirect, url_for, request, render_template
app = Flask(__name__)
@app.route('/', methods=['POST', 'GET'])
def choice():
if request.method == 'POST':
valeur_select = request.form['action']
if valeur_select == 'Picture':
return redirect(url_for('picture'))
else :
return redirect(url_for('video'))
return render_template('form.html')
@app.route('/Picture', methods=['POST', 'GET'])
def picture():
if request.method == 'POST':
duration = request.form['duration']
width = request.form['width']
height = request.form['height']
picture.take_picture(duration, width, height)
return 'photo prise'
return render_template('picture.html')
@app.route('/Video')
def video():
return 'yes'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
当我运行脚本时,我可以通过以下地址访问第一个html页面(form.html):http://:5000/。当我填写表格并发送时,我被重定向到这个地址:http://localhost:5000/。我的 WEB 页面中出现以下错误消息:无法连接 Firefox 无法与位于 localhost:5000 的服务器建立连接。但是,我可以通过地址 http://:5000/Picture 访问我的 html 页面 picture.html。我的控制台中没有显示错误: `camera@camera:~/user_space $ python user_space.py
为了解决我的问题,我首先像这样多次修改我的 picture.html 代码:
<form action = "http://<remote machine IP address>/Picture" method = "post">
或 <form action = "/Picture" method = "post">
我修改了 /etc/hosts 文件,将
127.0.1.1 camera
行替换为 <remote machine IP address> camera
我检查了防火墙是否阻止了端口 5000:`camera@camera:~/user_space $ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT) target prot opt source destination
Chain OUTPUT (policy ACCEPT) target prot opt source destination`
我检查了我的html代码在模板文件夹中:
camera@camera:~/user_space/templates $ ls
form.html picture.html
我检查了可能的错误:
camera@camera:~/user_space $ journalctl -u flask.service -- Journal begins at Wed 2023-05-03 02:36:11 CEST, ends at Thu 2023-05-18 09:42:17 CEST. -- No entries --
我试过换浏览器,错误依旧。