python - 将列表传递给 HTML 表单 Python

标签 python html selenium cgi mechanize

我正在尝试使用 Python 将列表传递到 HTML 表单中。我是一个菜鸟,我不太确定我在做什么,所以任何建议都将不胜感激。

我想要做的是填写所有空白文本框,然后单击单选按钮并使用列表下拉列表/菜单。此列表将是表单的默认值。

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

我一直在尝试使用 CGI 模块来做到这一点,但我做得不对。我应该使用 mechanise 还是 selenium,还是可以使用 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>''')

最佳答案

部分问题是你从头开始旋转这一切。在更大的 Python 社区中提供了许多模板库和工具,您可能需要查看这些。就个人而言,我喜欢 Flask。

如果我不得不在不求助于外部库的情况下解决这个问题,我会更改 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.

关于python - 将列表传递给 HTML 表单 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38769207/

相关文章:

javascript - 使用坐标裁剪图像

python - 如何使用 python 检查网站是否响应?

css - 检查 Web 元素是否具有带有伪选择器的类(:first-child) applied using Selenium WebDriver

selenium - 在 Selenium 中, sendKeys() 和 setValue() 方法究竟有何不同?

Java Selenium WebDriver - 如何在不使用 Remote WebDriver 的情况下设置 ScrollBehavior (elementScrollBehavior)?

python - 以右对齐的精度打印 float

python - 如何使用 conda 环境为 anaconda spyder 设置不同的桌面启动器?

javascript - Bootstrap collapse.in 需要点击两次才能隐藏侧边栏

python - 如何在python多维列表中找到高于特定值的所有索引

python - 如何在 python 脚本中导入 lldb