python GAE中的动态下拉列表

Posted

技术标签:

【中文标题】python GAE中的动态下拉列表【英文标题】:dynamic dropdown list in python GAE 【发布时间】:2013-07-12 20:53:30 【问题描述】:

我正在使用 GAE 和 Python 来构建应用程序。我的首页(Index.html)中有 2 个下拉菜单“应用程序”和“版本”。我能够从数据库中动态填充第一个下拉列表。根据第一个下拉列表的选择,我需要填充第二个。我尝试使用 onchange 事件和 javascript 来捕获第一个下拉列表中的选择 id。但我不确定如何将捕获的 onchangeid 传递给后端。 request.get 似乎不起作用。感谢任何帮助。

我的 main.py 看起来像

class MainPage(webapp.RequestHandler):
  def get(self):
      proj = db.GqlQuery("SELECT DISTINCT Applicationname FROM Dashboard")

      Appname1 = self.request.get('selvalue.value')
      proj1 = Dashboard.all().filter('Applicationname =',Appname1)

      values = 'appnames' : proj, 'vernums' : proj1
      self.response.out.write(template.render('index.html',values))

class Dashboard(db.Model):
   Applicationname = db.StringProperty(required=True)
   Version=db.StringProperty(required=True)
   Type=db.StringProperty()
   Pagename=db.StringProperty(required=True)
   Responsetime=db.StringProperty(required=True)


class DisplayHandler(webapp.RequestHandler):
  def post(self):
      Appname=self.request.get('Applicationname')
      Vernum=self.request.get('Version')
      query = Dashboard.all().filter('Applicationname =',Appname).filter('Version =',Vernum)
      values = 'query' : query
      self.response.out.write(template.render('response.html',values))

def main():
    application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/Display', DisplayHandler)
                                     ],
                                     debug=True)
    run_wsgi_app(application)

if __name__ == "__main__":
  main()

我的 index.html 看起来像这样

<html>
<head>
<title> My First Web Page </title>
<link rel="stylesheet" type="text/css" href="style.css"> </link>
<script type="text/javascript">
function myFunction(Applicationname)

var selvalue = document.getElementById("Applicationname");      


</script>
</head>

<body>
    <form action="/Display" method="post">

        <select name="Applicationname" id="Applicationname" onchange="myFunction()"  >
            <option value="Select">---Select---</option>
                % for q in appnames %
            <option value="q.Applicationname">q.Applicationname</option>
                % endfor %
</select>

 <br><br>

Select the Version number
        <select name="Version" id="Version">
            <option value="Select">---Select---</option>
            % for r in vernums %
            <option value="q.Version">r.Version</option>
            % endfor %
        </select>

    <input type="submit" value="Submit" align="center"/>
    </form>

【问题讨论】:

customizing admin of django to have dependent select fields 的可能重复项 【参考方案1】:

不久前我做了一些东西来做这件事。阅读本页底部,了解您需要做什么来构建它:

https://github.com/dragonx/django-hier-ajax-form/blob/master/README.rst

我后来发现有一个现有的项目做同样的事情:

https://github.com/digi604/django-smart-selects

【讨论】:

【参考方案2】:

您的MainPage.get() 例程看起来需要一个查询字符串selvalue.value。像这样更改您的index.html

<select name="Applicationname" id="Applicationname"
 onchange="document.location.href='/?selvalue.value="+this.value+"'"  >

这将导致页面重新加载并显示指定Applicationnamevernums

这不是解决这个问题的唯一方法,但它是最短的。

【讨论】:

谢谢布伦特。我尝试了上述方法,但仍然无法在 main.py 中检索所选值。您还有什么建议吗? 什么不起作用,具体来说?也许您需要对值进行 URI 编码? onchange="document.location.href='/?selvalue.value="+encodeURIComponent(this.value)+"'"【参考方案3】:

请看django-smart-select或这个问题:customizing admin of django to have dependent select fields

【讨论】:

以上是关于python GAE中的动态下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

如何创建多个从同一个数组中获取值的动态下拉列表,而无需更改 Javascript 中的其他下拉列表

以角度6动态加载formarray中的多个下拉列表

我有表格,在里面我动态生成下拉列表,我想获取每个下拉列表的值

Laravel 中的动态相关下拉列表

nodejs mysql中的动态下拉列表

动态下拉列表 - 想要一种将输入存储在变量中的方法[重复]