2016-08-04 12 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、助けてくれてありがとう、私が答えを理解しているかどうかは分かりませんが、私はそれを調べます。私がこのようにしているのは、アーム・プロセッサー上のすべてのコードを実行するサウンド監視ハードウェアにフィットするプロジェクトの一部であるからです。 –

0

私はいくつかの進歩を遂げています。私は設定リストからいくつかの情報を引き出すことに取り組んでいます。しかし、私はラジオボタンやドロップダウンリストに影響を与えることはできないようです。ここに私のコードがあります:

#!/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) 

誰かが正しい方向に私を指摘できますか?

関連する問題