저는 웹 서버를 가지고 놀고 CGI 모듈을 사용하여 파이썬 루틴을 호출했습니다. 그것은 도전적 이었지만 잘 작동합니다.CGI 파이썬 스크립트가 실행 된 후 어떻게 자동으로 홈페이지로 돌아갈 수 있습니까?
내 문제는 파이썬 스크립트 실행 후입니다, 내 홈 페이지로 다시 리다이렉트하는 스크립트에 루틴을 소개하고 싶습니다.
이 포럼 질문에서이 답변을 보았습니다. 대부분의 경우 대답은 명령 줄 print("Location:http://your_page")
을 사용하지만 이미 trie를 사용하고 있으며 제 경우에는 작동하지 않습니다.
다음 단락에서 나는 전체 "미니 프로젝트"를 설명하려고 시도하고 나서 코드를 보도록하겠습니다.
인터넷을 통한 무선 홈 시스템의 원격 제어. 언어 Python과 PHP, 리눅스 지식 O.S.
이 프로젝트의 목적은 웹 페이지 (인터넷 연결)의 버튼을 클릭하면 LED를 켜고 끄는 것입니다. LED는 가정의 어딘가 무선 모듈에 있습니다.
BeagleBone Black (Debian O.S.)에서 실행중인 Apache2 웹 서버 설정하기. Beagle Bone Black은 UTP 케이블을 통해 LAN에 연결됩니다.
ESP32 모듈을 TCP 서버로 프로그래밍하고 Wi-Fi (LAN)에도 연결합니다.
프로그래밍 된 ESP32 모듈과 TCP 클라이언트 연결을 실행하고 LED를 켜고 끄는 CGI 모듈로 구성된 Python 스크립트. 웹 페이지에서 버튼을 클릭하면 스크립트가 실행됩니다.
인터넷에서 Web Server에 액세스 할 수 있도록 모뎀/라우터에서 포트를 앞으로 설정합니다.
index.html을 (홈 페이지)
<!DOCTYPE html>
<html>
<head>
<title>Web Server MReyesP!</title>
<style>
.button {
padding: 15px 25px;
font-size: 24px;
text-align: center;
cursor: pointer;
outline: none;
color: #fff;
background-color: #4CAF50;
border: none;
border-radius: 15px;
box-shadow: 0 9px #999;
}
.button:hover {background-color: #3e8e41}
.button:active {
background-color: #3e8e41;
box-shadow: 0 5px #666;
transform: translateY(4px);
}
</style>
</head>
<body>
<h1>Success! The Web Server is working :)</h1>
<h2>Click the Button to run - "LED On/Off program"</h2>
<input class=button onClick="location.href='http://my_web_page.net/cgi-bin/TCPC$
</body>
</html>
이 내 결과 홈 페이지. 내 파이썬 스크립트는 루틴을 실행하지만 다시 내 홈 페이지로 리디렉션하지 않는 결과로 Home page
python_script.py
#!/usr/bin/python3
import socket
import time
import cgitb
cgitb.enable()
print("Content-type: text/html\n\n")
print("<html>\n<body>")
print("<div style=\"with:100%; font-size: 40px; font-weight bold; text-align: c$
print("The LED was turned On and after 2 seconds was turned Off")
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip="192.168.2.112"
port=1234
address=(ip,port)
client.connect(address)
data = 'led_on'
client.sendall(data.encode('utf-8'))
time.sleep(2)
data = 'led_off'
client.sendall(data.encode('utf-8'))
client.close()
print("Location: http://my_web_page.net/\n")
print("</div>\n</body>\n</html>")
. 다음 이미지에서 결과를 직접 볼 수 있습니다. 이 웹 페이지는 영원히 남습니다.
감사합니다. 정말로 시간과 도움에 감사드립니다.
참고 : 당신이 당신의 자신의 출력 및 리디렉션을 인쇄하려면 당신은 리디렉션을 수행하는 사용자의 응답에 간단한 자바 스크립트의 조각을 방출 할 필요가
간단한 방법은 CGI 스크립트가 현재의 LED 상태와 같이 표시하려는 추가 정보와 함께 페이지를 다시 작성하는 것입니다. [이 오래된 대답] (https://stackoverflow.com/a/26059792/4014959)은 _may_가 당신을 위해 일하는 또 다른 방법을 보여줍니다. 죄송합니다. 파이썬 2에 있지만, 쉽게 수정할 수 있어야합니다. FWIW, CGI는 요즘 매우 고풍스러운 것으로 간주되지만, 단순한 것들에 대해서는 여전히 편리하다고 생각합니다. 그러나 그렇게 간단하지 않은 것들에 대해서는 금방 고통스러워집니다. ;) –
'입력 클래스 = 버튼 onClick = "location.href = 'http : // my_web_page.net/cgi-bin/TCPC $'<- 그 라인이 맞지 않습니다 ... – dda