如何通过引用代码中的列表在python代码中创建HTML下拉列表?

时间:2019-05-02 09:09:54

标签: python html list dropdown cherrypy

我试图通过从我用python代码生成的列表中获取值来创建HTML下拉列表。我通过从json文件中获取字符串在python中创建列表,然后在以CherryPy开头的HTML页面的下拉列表中显示该列表。我的HTML代码应该怎么做?

这是创建列表的代码的一部分:

def get_lists(self):
    file = open(CONF_FILE, 'r')
    config = json.load(file)
    file.close()
    string = config["URL"] + ":" + config["port"] + "/static" # Genera URL per GET
    data = json.loads(requests.get(string).text)  # GET per ottenere il catalog
    list_gar = [g["name"] for g in data["gardens"]] # Generates list of gardens
    list_pla = [p["name"] for p in data["plants"]]  # Generates list of plants
    list_dev = [d["name"] for d in data["devices"]] # Generates list of devices

这是应该创建下拉列表的函数,但是我不知道如何编写它才能显示特定列表的字段(假设在这里我要显示列表“ list_gar”):

#function to add the plant
@cherrypy.expose
def addplant(self):
    return """<html>
      <head></head>
      <body>
        <h2>ADD PLANT</h2>
        <form method="get" action="posting_plant" target="_self">
        Select Garden:<br>
          <select name="garden">
            <option value=""></option>
            <option value=""></option>
            <option value=""></option>
            <option value=""></option>
          </select>
          <br>
          Name:<br>
          <input type="text" name="name" value="">
          <br>
          <br><br>
          <input type="submit">
        </form>
      </body>
    </html>"""

1 个答案:

答案 0 :(得分:0)

我们可以使用for循环并遍历列表,以便为列表的每个元素创建一个下拉项。

string="""<html>
  <head></head>
  <body>
    <h2>ADD PLANT</h2>
    <form method="get" action="posting_plant" target="_self">
    Select Garden:<br>
      <select name="garden">
        """
for i in list_gar:
    string+="""<option value="""+i+"""></option>\n            """
string+="""      </select>
      <br>
      Name:<br>
      <input type="text" name="name" value="">
      <br>
      <br><br>
      <input type="submit">
    </form>
  </body>
</html>"""
return string