2017-06-05 2 views
0

Ich bin neu in Python. Ich schreibe ein Online-Bewerbungsformular, mit dem Nutzer ihren Namen eingeben, telefonieren, emailen und eine Klasse auswählen können. Die Frage ist, dass sobald Benutzer die Daten von Name, Telefon, E-Mail eingeben, wird es das Ergebnis auf der nächsten Seite und systematisch auf der Hauptseite präsentieren. Wenn Benutzer jedoch die Option class aus der HTML-Auswahloption auswählen, kann das Ergebnis nicht auf der nächsten Seite und der Hauptseite angezeigt werden. Wie kann ich die ndb.StringProperty() anpassen, um den Wert aus der Auswahloption zu erhalten?ändere die ndb.StringProperty()

class Contact(ndb.Model): 
name = ndb.StringProperty() 
phone = ndb.StringProperty() 
email = ndb.StringProperty() 
classselect = ndb.StringProperty() 
date = ndb.DateTimeProperty(auto_now_add=True) 

@classmethod 
def query_contact(cls, ancestor_key): 
    return cls.query(ancestor=ancestor_key).order(-cls.date) 
`class MainHandler(Handler): 
def get(self): 

    email = "[email protected]" 

    ancestor_key = ndb.Key("Email", email or "*nocell*") 
    contacts = Contact.query_contact(ancestor_key).fetch(20) 

    self.render('mainPage.html', contacts = contacts) 

    class Newcontact(webapp2.RequestHandler): 
    def post(self): 
    email = "[email protected]" 
    new_name = self.request.get('name') 
    new_phone = self.request.get('phone') 
    new_email = self.request.get('email') 
    new_classselect = self.request.get('classselect') 
    newcontactitem = Contact(parent=ndb.Key("Email", email or "*nocell*"), 
    name = new_name, phone = new_phone, email = new_email,classselect = 
    new_classselect) 
    newcontactitem.put() 

    self.response.out.write('<html><body>New Contact has been added<pre>') 
    self.response.out.write('<P>'+cgi.escape("Name: " + new_name)) 
    self.response.out.write('<P>'+cgi.escape("Phone: " + new_phone)) 
    self.response.out.write('<P>'+cgi.escape("Email: " + new_email)) 
    self.response.out.write('<P>'+cgi.escape("classselect:+"new_classselect)) 
    self.response.out.write('<P><input type ="button" onclick="location.href 
    = document.referrer" value="回到上一頁"></input>') 
    self.response.out.write('</pre></body></html>') 

    app = webapp2.WSGIApplication([ 
    ('/', MainHandler), 
    ('/insertcontact', Newcontact),], debug=True)` 

HTML wählen Sie die Option, so werden diese in der Vorlage eingegeben:

<body> 
    <form action="/insertcontact" method="post" enctype="multipart/form-data"> 
     <div>Name:</div> 
     <input type="text" name="name" value="{{name}}"> 
     <div>Phone number:</div> 
     <input type="text" name="phone" value="{{phone}}"> 
     <div>Email address:</div> 
     <input type="text" name="email" value="{{email}}"> 

     <div>classselect:</div> 
     <select name="YourClass"value=""> 
     <option value="A">CLASS A</option> 
     <option value="B">CLASS B</option> 
     <option value="C">CLASS C</option> 
     </select> 
     <div>gender:</div> 
     <input type="radio" name="gender" value="male" checked>male 
     <input type="radio" name="gender" value="female">female 

     <div> 
     <input type="submit" name="newcontact"> 
    </div> 
    </form> 
    <hr> 
    {% for contact in contacts %} 
    <div> 
     <div>{{contact.name}} - {{contact.phone}} - {{contact.email}- 
    {{contact.classselect}}</div> 
    </div> 
    {% endfor %} 
    </body> 
    </html> 

Ergebnisse: the page after user entered application info

Antwort

0

ich in Ihrem HTML-Körper denken

<select name="YourClass" value=""> 

sollte
<select name="classselect" value="">