我在页面上有一个切换按钮' index.html'。当我点击它时,它会执行一个python cgi脚本,它会改变我的覆盆子上的某些东西的状态。
为此,我这样做:
HTML:
<form id="tgleq" method="POST" action="/cgi-bin/remote.py" target="python_result">
<input id="toggle-eq" type="checkbox" data-toggle="toggle" name="toggle-eq" value="">
<script>
$(function() {
$('#toggle-eq').change(function() {
tgl_state = $('#toggle-eq').prop("checked")
var toggle = document.getElementById("toggle-eq");
toggle.value = tgl_state;
document.getElementById("tgleq").submit();
})
})
</script>
CGI:
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print "Content-type: text/html\n\n"
print
form=cgi.FieldStorage()
arg1 = form.getvalue('toggle-eq')
然后我按照arg1做我想做的事。
现在,我想要的是,当您打开Web界面页面时,获取raspberry组件的状态以初始化正确位置的切换。
为此,我在页面加载时发送一个表单,启动一个查看组件状态的脚本。但是我怎样才能在html中找回它?
我尝试了urllib和httplib2,但没有任何对我有用......有什么建议吗?
由于
答案 0 :(得分:0)
如果我正确理解您的问题,您希望在网页上显示可切换组件的当前状态。 目前看起来你有一个纯HTML页面和一个CGI页面,所以我认为你有多个选项,其中之一是将HTML和CGI组合成一个页面。
下面的代码是这个想法的一个示例,可能无法正常工作,因此不是复制/粘贴解决方案。
#!/usr/bin/env python
import cgi
import cgitb
cgitb.enable()
print "Content-type: text/html\n\n"
print
active="""
<form id="tgleq" method="POST" action="/cgi-bin/remote.py" target="python_result">
<input id="toggle-eq" type="checkbox" data-toggle="toggle" name="toggle-eq" value="">
"""
inactive="""
<form id="tgleq" method="POST" action="/cgi-bin/remote.py" target="python_result">
<input id="toggle-eq" type="checkbox" data-toggle="toggle" name="toggle-eq" value="checked">
"""
generic = """
<script>
$(function() {
$('#toggle-eq').change(function() {
tgl_state = $('#toggle-eq').prop("checked")
var toggle = document.getElementById("toggle-eq");
toggle.value = tgl_state;
document.getElementById("tgleq").submit();
})
})
</script>
"""
def set_state(option):
if (option==True):
actual_state_Setting_here = 1 # <-magic happens here
else:
actual_state_Setting_here = 0 # <-magic happens here
def get_state():
return actual_state_Setting_here # <- read actual value here
form = cgi.FieldStorage()
if ( form.getvalue('toggle-eq')=="checked" ):
set_state(True)
else:
set_state(False)
if ( get_state()==True ):
print(active) #show as currently active
else:
print(inactive) #show as currently inactive
print(generic) #show rest of the page