2016-08-04 2 views
0

목록을 Python으로 HTML 양식에 전달하려고합니다. 나는 멍청한 놈이고 내가하는 일을 정말로 확신하지 못하므로 어떤 조언도받을 수있을 것이다.목록을 HTML 양식 Python으로 전달

내가하려는 것은 모든 빈 텍스트 상자를 채우고 라디오 버튼을 클릭하고 목록을 사용하여 목록/메뉴를 드롭하는 것입니다. 이 목록은 양식의 기본값이됩니다.

form = cgi.FieldStorage() 
latitude = form.getvalue('latitude', '0') 
if config_settings.settings[0]: 
    latitude = config_settings.settings[0] 

은 내가 CGI 모듈이 일을 시도하고있다 그러나 나는이 권리를하고 있지 않다. 대신 기계 나 셀레늄을 사용해야합니까, 아니면 CGI와 FieldStorage로 할 수 있습니까? 모든 조언을 크게 주시면 감사하겠습니다.

#!/usr/bin/python 
import config_settings 
import cgi 
import cgitb 
# A path to error logs 
cgitb.enable(display=0,logdir="/var/www/cgi-bin/error-logs") 


print("Content-Type: text/html\n\n") 
print("") 

print('''<html> 
<head> 
<title>EM2010 Sound Level Monitor - Setup</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="description" content="EM2010 User Interface"> 
    <meta name="author" content="Sonitus Systems"> 
</head> 

<body> 

<div class="navbar navbar-inverse navbar-fixed-top"> 
     <div class="navbar-inner"> 
     <div class="container-fluid"> 
      <div class="logo"> <a href="/index.html"> <img src="../images/sonitus_logo_halo.png" style="height:32px;" /> </a> </div> 
      <a class="brand" href="/index.html">EM2010 Sound Level Monitor</a> 
      <div class="nav-collapse collapse"> 
      <p class="navbar-text pull-right"> 
       <a href="./set_time.cgi" class="navbar-link"> <span id="showdate"> </span><span id="showtime"> </span> </a> 
      </p> 
      </div><!--/.nav-collapse --> 
     </div> 
     </div> 
    </div> 


     <div class="container-fluid"> 
      <div class="row-fluid"> 
      <div class="span10 offset1"> 
      <!--This is the line you need to look at mark--> 
      <form class="well form-inline" method="post" action="/cgi-bin/process_setup.cgi"> 

       <!-- Location --> 
       <i class="icon-location-arrow icon-large"> <span class="setting">&nbsp;Location<span></span></i><br><br> 
       Latitude: <input type="text" name="latitude" class="input-small" value="lat">&deg; 



<select name="latHemi"> 

    <option selected="selected">N</option> 
    <option>S</option></select> 

    <option>N</option> 
    <option selected="selected">S</option></select> 



&nbsp;&nbsp; 
Longitude: <input type="text" name="longitude" class="input-small" value="$long">&deg; 

<select name="longHemi"> 


    <option selected="selected">E</option> 
    <option>W</option></select> 

    <option>E</option> 
    <option selected="selected">W</option></select> 

<hr/> 
<!-- Mic Sensitivity --> 
<i class="icon-microphone icon-large"> <span class="setting">&nbsp;Microphone<span></span></i><br><br> 
Sensitivity: <input type="text" name="sensitivity" class="input-small" value="$micSensitivity"> dB 


<hr/> 
<!-- Measurement Settings --> 
<i class="icon-edit icon-large"> <span class="setting">&nbsp;Measurement Settings<span></span></i><br><br> 
<h5>Weighting:</h5> 



<label class="checkbox inline control-label"><input name="aWeight" value="aWeight" checked="checked" readonly="readonly" disabled="disabled" type="checkbox"> 
<span> A-Weight &nbsp;&nbsp;&nbsp;</span></label> 


    <label class="checkbox inline control-label"><input name="cWeight" value="cWeight" checked="checked" type="checkbox"> 



<span> C-Weight</span></label> 



<br> 
<br> 
<h5>Optional Levels (L<sub>EQ</sub> is always recorded):</h5> 




    <label class="checkbox inline control-label"><input name="L95" value="L95" checked="checked" type="checkbox"> 

    <!--<label class="checkbox inline control-label"><input name="L95" value="L95" type="checkbox">--> 

<span> L95 &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="checkbox inline control-label"><input name="L90" value="L90" checked="checked" type="checkbox"> 

    <!--<label class="checkbox inline control-label"><input name="L90" value="L90" type="checkbox">--> 

<span> L90 &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="checkbox inline control-label"><input name="L50" value="L50" checked="checked" type="checkbox"> 

    <!--<label class="checkbox inline control-label"><input name="L50" value="L50" type="checkbox">--> 

<span> L50 &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="checkbox inline control-label"><input name="L10" value="L10" checked="checked" type="checkbox"> 

    <!--<label class="checkbox inline control-label"><input name="L10" value="L10" type="checkbox">--> 

<span> L10 &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="checkbox inline control-label"><input name="L05" value="L05" checked="checked" type="checkbox"> 

    <!--<label class="checkbox inline control-label"><input name="L05" value="L05" type="checkbox">--> 

<span> L5 &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="checkbox inline control-label"><input name="fmax" value="fmax" checked="checked" type="checkbox"> 

    <!--<label class="checkbox inline control-label"><input name="fmax" value="fmax" type="checkbox">--> 

<span> L<sub>MAX</sub></span></label> 



<br> 
<br> 
<h5>Averaging Period:</h5> 





    <label class="radio inline control-label"><input name="epoc" value="1min" checked="checked" type="radio"> 

    <!--<label class="radio inline control-label"><input name="epoc" value="1min" type="radio">--> 

<span> 1 minute &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="radio inline control-label"><input name="epoc" value="5min" checked="checked" type="radio"> 

    <!--<label class="radio inline control-label"><input name="epoc" value="5min" type="radio">--> 

<span> 5 minutes &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="radio inline control-label"><input name="epoc" value="10min" checked="checked" type="radio"> 

<!-- <label class="radio inline control-label"><input name="epoc" value="10min" type="radio">--> 

<span> 10 minutes &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="radio inline control-label"><input name="epoc" value="15min" checked="checked" type="radio"> 

    <!--<label class="radio inline control-label"><input name="epoc" value="15min" type="radio">--> 

<span> 15 minutes &nbsp;&nbsp;&nbsp;</span></label> 

    <label class="radio inline control-label"><input name="epoc" value="30min" checked="checked" type="radio"> 

    <!--<label class="radio inline control-label"><input name="epoc" value="30min" type="radio">--> 

<span> 30 minutes</span></label>" 



<br> 
<br> 
<h5>Time Weighting (L<sub>MAX</sub>):</h5> 





    <label class="radio inline control-label"><input name="fastaveraging" value="fastaveraging" checked="checked" type="radio"> 
    <span> 0.125s (Fast) &nbsp;&nbsp;&nbsp;</span></label> 
    <label class="radio inline control-label"><input name="fastaveraging" value="empty" type="radio"> 
    <span> 1s (Slow)</span></label> 

    <label class="radio inline control-label"><input name="fastaveraging" value="fastaveraging" type="radio"> 
    <span> 0.125s (Fast)&nbsp;&nbsp;&nbsp;</span></label>" 
    <label class="radio inline control-label"><input name="fastaveraging" value="empty" checked="checked" type="radio"> 
    <span> 1s (Slow)</span></label>" 






<hr/> 
<!-- Reboot --> 
<i class="icon-refresh icon-large"> <span class="setting">&nbsp;Reboot Time<span></span></i><br><br> 






    <label class="radio inline control-label"><input name="bootTime" value="midnight" checked="checked" type="radio"> 

    <!--<label class="radio inline control-label"><input name="bootTime" value="midnight" type="radio">--> 

<span >00:00hrs</span></label> 


    <label class="radio inline control-label"><input name="bootTime" value="7am" checked="checked" type="radio"> 

<!--<label class="radio inline control-label"><input name="bootTime" value="7am" type="radio">--> 

<span >07:00hrs</span></label> 


    <label class="radio inline control-label"><input name="bootTime" value="7pm" checked="checked" type="radio"> 

    <!--<label class="radio inline control-label"><input name="bootTime" value="7pm" type="radio">--> 

<span >19:00hrs</span></label> 


    <label class="radio inline control-label"><input name="bootTime" value="23pm" checked="checked" type="radio"> 
else 
    <!--<label class="radio inline control-label"><input name="bootTime" value="23pm" type="radio">--> 

<span >23:00hrs</span></label> 




<hr/> 
<!-- ISP --> 
<i class="icon-cloud-upload icon-large"> <span class="setting">&nbsp;Remote Upload<span></span></i><br><br> 




    <label class="radio inline control-label"><input name="isp" value="nointernet" checked="checked" type="radio"> 
else 
    <label class="radio inline control-label"><input name="isp" value="nointernet" type="radio"> 

<span>Upload Off</span></label> 


    <label class="radio inline control-label"><input name="isp" value="vodafone" checked="checked" type="radio"> 

    <label class="radio inline control-label"><input name="isp" value="vodafone" type="radio"> 

<span>Upload On</span></label> 




<hr/> 
    Changes will not take effect until the monitor is <span class="bold">rebooted</span>. 
    <p class="offset0"> 
    <br/> 
    <label for="submit" class="btn"><i class="icon-ok"></i> Submit Changes</label> 
    <input id="submit" name="Submit" value="Submit Changes" type="submit" class="hidden" /> 

    <label for="reset" class="btn"><i class="icon-refresh"></i> Reset Form</label> 
    <input id="reset" name="Reset" value="Reset Form" type="reset" class="hidden" /> 

    <label for="restore" class="btn"><i class="icon-home"></i> Restore Defaults</label> 
    <input id="restore" name="Submit" value="Restore Factory Defaults" type="submit" class="hidden" /> 
    </p> 
    </form> 





</body> 

</html>''') 

답변

0

문제의 일부는이 모든 것을 처음부터 위로 돌리고 있다는 것입니다. 더 큰 Python 커뮤니티에서 많은 템플릿 라이브러리와 도구가 제공됩니다. 개인적으로 나는 플라스크를 좋아한다. 나는 가 외부 라이브러리에 의지하지 않고이 문제를 해결하기이 있다면

, 나는 {location}에 코드에서 location의 모든 인스턴스를 변경 한 다음 마지막에 .format(location = location)을 추가합니다.

location = 'cat' 
# Notice the location with braces, and the one without. 
html = '<input value="{location}" name="location" type="text" />' 
print(html.format(location = location)) 

# outputs <input value="cat" name="location" type="text" /> 
# the location with braces is replaced. 
+0

안녕하세요 @ cwallenpoole, 도움을 주셔서 감사합니다, 내가 대답을 이해하는지 모르겠지만 그것에 대해 살펴 보겠습니다. 이런 식으로하는 이유는 ARM 프로세서에서 모든 코드를 실행하는 사운드 모니터링 하드웨어에 맞춰질 프로젝트의 일부이기 때문입니다. –

0

덕분에 cwallenpoole 나는 약간의 진전을 이루고 있습니다. 설정 목록에서 일부 정보를 가져 오려고합니다. 그러나 나는 라디오 버튼이나 드롭 다운 목록에 영향을 줄 수있는 것 같지 않습니다. 여기 내 코드가 있습니다 :

#!/usr/bin/python 
import config_settings 
import cgi 
import cgitb 
cgitb.enable(display=0,logdir="/var/www/cgi-bin/error-logs") 






print("Content-Type: text/html\n\n") 
print("") 

latitude = config_settings.settings[0] 
latHemi = config_settings.settings[1] 
longitude = config_settings.settings[2] 
longHemi = config_settings.settings[3] 
sensitivity = config_settings.settings[4] 


htmlFormat='''<html> 
<head> 
<meta charset="utf-8"> 
    <title>EM2010 Sound Level Monitor - Setup</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta name="description" content="EM2010 User Interface"> 
    <meta name="author" content="Sonitus Systems"> 

</head> 

<body> 

      <form class="well form-inline" method="post" action="/cgi-bin/process_setup.cgi"> 

       <!-- Location --> 
       <i class="icon-location-arrow icon-large"> <span class="setting">&nbsp;Location<span></span></i><br><br> 
       Latitude: <input type="text" name="latitude" class="input-small" value="{latitude}">&deg; 



<select name="latHemi"> 

    <option selected="{latHemi}">N</option> 
    <option>S</option></select> 

    <option>N</option> 
    <option selected="{latHemi}">S</option></select> 

    &nbsp;&nbsp; 
    Longitude: <input type="text" name="longitude" class="input-small" value="{longitude}">&deg; 

<select name="longHemi"> 


    <option selected="{longHemi}">E</option> 
    <option>W</option></select> 

    <option>E</option> 
    <option selected="{longHemi}">W</option></select> 

<hr/> 
<!-- Mic Sensitivity --> 
<i class="icon-microphone icon-large"> <span class="setting">&nbsp;Microphone<span></span></i><br><br> 
Sensitivity: <input type="text" name="sensitivity" class="input-small" value="{sensitivity}"> dB 

print htmlFormat.format(latitude=latitude, latHemi=latHemi, longitude=longitude, 
longHemi=longHemi, sensitivity=sensitivity,weight=weight) 

누구든지 올바른 방향으로 나를 가리 키시겠습니까?