我一直在玩Web服務器,並使用CGI模塊調用Python例程。這是具有挑戰性的,但它工作正常:)執行CGI Python腳本後,如何自動返回到我的主頁?
我的問題是在Python腳本執行後,我想介紹一個例程在我的腳本再次重定向到我的主頁。
我在這個論壇看到類似這樣的問題,在大多數情況下的答案是:使用命令行print("Location:http://your_page")
,但我已經發現它並且在我的情況下不起作用。
在下一段中,我將嘗試解釋我的整個「小型項目」,然後讓我看看我的代碼。
通過互聯網遠程控制無線家庭系統。語言Python和PHP,以及Linux知識O.S.
該項目的目的是點擊網頁上的按鈕(互聯網連接)打開和關閉LED。 LED位於家中的某個無線模塊中。
設置在BeagleBone Black(Debian O.S.)上運行的Apache2 Web服務器。 Beagle Bone Black通過UTP電纜連接到局域網。
將ESP32模塊編程爲TCP服務器並連接到Wi-Fi(LAN)。
作爲CGI模塊的程序化Python腳本,用於執行與ESP32模塊的TCP客戶端連接,並命令開啓並關閉LED。該腳本在網頁中單擊按鈕時執行。
在調制解調器/路由器上設置端口以允許從互聯網訪問Web服務器。
的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>")
至於導致我的Python腳本執行程序,但不重定向到我的主頁。您可以自己看到下一張圖片的結果。這個網頁永遠保持。
你有什麼想法?我必須在我的Python代碼中插入什麼才能返回到我的主頁?
謝謝你們,我非常感謝你們的時間和幫助。
注:我使用Python 3
一個簡單的方法是讓你的CGI腳本重新寫入頁面,以及任何你想要顯示的額外信息(如當前的LED狀態)。 [這是我的舊回答](https://stackoverflow.com/a/26059792/4014959)顯示_may_爲您工作的另一種方式。對不起,它在Python 2中,但應該很容易修復。 FWIW,CGI現在被認爲非常老套,但我想它對於簡單的東西仍然很方便。但對於不那麼簡單的東西,它很快就會變得很痛苦。 ;) –
' dda