0

Я использую GAE с Python для создания приложения. На моей первой странице (Index.html) у меня есть 2 приложения для выпадающих списков и «версии». Я могу динамически заполнять первый раскрывающийся список из базы данных. Основываясь на выборе первого раскрывающегося списка, мне нужно заполнить второе. Я попытался с событием onchange и javascript, чтобы захватить идентификатор выбора в первом раскрывающемся списке. но я не уверен, как передать захваченный onchangeid на сервер. request.get, похоже, не работает. Цените любую помощь.динамический раскрывающийся список в python GAE

мой 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> 
+0

Возможный дубликат [настройка admin django для зависимых полей выбора] (http://stackoverflow.com/questions/8380241/customizing-admin-of-django-to-have-dependent-select-fields) – dnozay

ответ

1

Вашей MainPage.get() рутинной внешность как ожидается строка запроса selvalue.value. Измените ваш index.html так:

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

Это вызовет перезагрузку страницы и показать vernums для указанного Applicationname.

Это не единственный способ решить эту проблему, но она кратчайшая.

+0

Спасибо Brent. Я пробовал выше, но все же я не могу получить выбранное значение в моей main.py. Есть ли у вас какие-либо другие предложения? – nicko

+0

Что конкретно не работало? Может быть, вам нужно кодировать значение URI? 'OnChange = "document.location.href = '/? Selvalue.value = "+ encodeURIComponent (this.value) +'" ' –

0

Я построил что-то, чтобы сделать это некоторое время назад. Читайте в нижней части этой страницы для объяснения того, что вам нужно сделать, чтобы построить это:

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

позже я узнал, что есть существующий проект, который делает то же самое:

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

Смежные вопросы