0

Ich habe ein Formular auf einer Seite und senden Sie die Details des Formulars auf den Klick der Schaltfläche Senden und die Seite aktualisieren möchten, nachdem das Objekt zum Datenspeicher hinzugefügt wurde. Ich habe online gelesen, dass dies an der Eventual Consistency des Datenspeichers liegen könnte, aber es scheint nicht möglich zu sein, einen Weg zu finden, das gewünschte Ergebnis zu erzielen (Aktualisieren der Seite).GAE: Wie Seite nach dem Senden von Formular auf GAE aktualisieren?

class AddUpdateProfile(webapp2.RequestHandler): 
    def post(self): 
     #This will be used to add/update profile in a datastore. Will be called when the user clicks on submit button on the Profile Page 
     template = JINJA_ENVIRONMENT.get_template('profile.html') 
     error = None 
     name = self.request.get('name') 
     designation = self.request.get('designation') 
     salary = self.request.get('salary') 
     currency = self.request.get('currency') 
     logging.info("Name = "+name) 
     logging.info("Designation = "+designation) 
     logging.info("Salary = "+salary) 
     logging.info("Currency = "+currency) 

     profile = UserProfile(parent=userProfile_key(users.get_current_user().email())) 
     profile.name = name 
     profile.designation = designation 
     profile.salary = int(salary) 
     profile.currency = currency 
     profile.email = str(users.get_current_user().email()) 
     profile.put() 

     #Go back to main page. TODO : Change this to update 
     self.redirect('/profile') 

class Profile(webapp2.RequestHandler): 

    def get(self): 
     logging.info("Inside Profile Page") 
     user = users.get_current_user() 

     if user: 
      profileInfo = getProfileInformation(user.email()) 
      logging.info("Found a user inside Profile Page") 
      url = users.create_logout_url(self.request.uri) 
      if profileInfo is None or not profileInfo: 
       logging.info("Email = "+user.email()) 
       logging.info("Profile Info not found") 
       template_values = { 
       'user': user.nickname(), 
       'url': url 
       } 
      else: 
       logging.info("Profile Info found") 
       template_values = { 
       'user': user.nickname(), 
       'url': url, 
       'name' : profileInfo[0].name, 
       'designation' : profileInfo[0].designation, 
       'salary' : profileInfo[0].salary, 
       'currency' : profileInfo[0].currency 
       } 


      template_values = template_values 
      template = JINJA_ENVIRONMENT.get_template('profile.html') 
      self.response.write(template.render(template_values)) 
     else: 
      logging.info("User not found. Loading Landing page") 
      template_values = { 
       'url' : users.create_login_url(self.request.uri) 
      } 
      template = JINJA_ENVIRONMENT.get_template('landing.html') 
      self.response.write(template.render(template_values)) 


class MainPage(webapp2.RequestHandler): 

    def get(self): 
     logging.info("Inside MainPage") 
     user = users.get_current_user() 
     if user: 
      logging.info("Found a user inside MainPage") 
      url = users.create_logout_url(self.request.uri) 
      url_linktext = 'SIGN OUT' 
      template_values = { 
      'user': user.nickname(), 
      'url': url, 
      'userPage' : "no", 
      'url_linktext': url_linktext, 
      } 
      template = JINJA_ENVIRONMENT.get_template('index.html') 
      self.response.write(template.render(template_values)) 
     else: 
      logging.info("User not found. Loading Landing page") 
      template_values = { 
       'url' : users.create_login_url(self.request.uri) 
      } 
      template = JINJA_ENVIRONMENT.get_template('landing.html') 
      self.response.write(template.render(template_values)) 

app = webapp2.WSGIApplication([ 
    ('/', MainPage), 
    ('/profile', Profile), 
    ('/addProfile', AddUpdateProfile) 
], debug=True) 

Es wäre toll, wenn jemand einen Blick auf den Code haben könnte und geben Sie mir eine Eingabe auf, wie das Problem zu lösen.

Jede Hilfe wird wirklich geschätzt! Danke!

+1

Sie haben Ihr Problem nicht beschrieben. * Was * ist wegen eventueller Konsistenz? –

+0

Ich denke, ich kann eine Antwort geben, aber wie Daniel betont, müssen Sie Ihr Problem genauer beschreiben und auch die Fragen kürzer machen - es gibt keine Notwendigkeit für die Leute, den ganzen Code zu sehen (wie Gehalt, Währung, etc). Versuchen Sie, Ihren Code so kurz wie möglich und auf den Punkt zu bringen. Einmal bearbeitet, kann ich eine Antwort geben. –

Antwort

1

Nicht sicher, ob dies das ist, was Sie suchen, aber im Allgemeinen, wenn Sie die Seite aktualisieren möchten, sollten Sie es mit Javascript/JQuery auf Ihrer Seite tun.

Lassen Sie Ihren Endpunkt eine JSON-Antwort zurück an das '/ profile' senden. Die Antwort sollte ungefähr so ​​aussehen:

{"success":"success"} 

Oder wenn, benötigen Sie eine Fehlermeldung an:

{"error": "insert error message here"} 

Ihr Javascript und/JQuery sollten dann prüfen, ob „Fehler“ in der Antwort ist. Wenn es eine Fehlermeldung gibt, aktualisieren Sie andernfalls die Seite.

How to reload a page using Javascript?