Pythonpfadmanipulation

Ich verwende GAE und webapp2, um eine einfache PM-Anwendung zu erstellen.

Dies ist Teil meines Codes für das Hinzufügen einer Aufgabe, die meinem Projekt zugeordnet ist.

class AddTask(webapp2.RedirectHandler): def get(self): project_id = self.request.path.split('/')[-1] print project_id project = Project.get_by_id(int(project_id)) print project template_values = { 'project': project, 'project_id': project_id } path = os.path.join(os.path.dirname(__file__), '../templates/project-task-add.html') self.response.write(template.render(path, template_values)) 

Die URL wird auf diese Weise behandelt http://localhost:8080/projects/5812155903377408/tasks/add

Das Problem, das ich habe, ist, dass ich das Projekt nicht richtig machen kann. Split-Funktion spaltet sich nur nach dem letzten Schrägstrich und alles dahinter, also kann ich Split nicht benutzen. Gibt es irgendeine andere Art, dies zu behandeln, oder muss ich meine main.py umstrukturieren? Und ist eine Schlüssellose in der URL eine schlechte Praxis?

  • Wie entriegel ich die App-Engine-Datenbank, wenn localhost läuft?
  • Python Google App Engine Cron Job funktioniert nicht
  • Wie authentifiziert man Google Appegine (Python) Remote-API-Zugriff
  • Flasche vs webapp2 für Google App Engine
  • Google App Engine, Ändern Sie die python Version
  • Appengine läuft nicht mehr zweimal, wenn task_retry_limit = 0 ist
  • Zuweisen eines Autors zu einer Entität während der Erstellung
  • Google App Engine Launcher stürzt auf Mac ab
  • One Solution collect form web for “Pythonpfadmanipulation”

    Sie sollten nicht versuchen, Parameter zu extrahieren, indem Sie URLs aufteilen. Sie sollten den Webapp2-Routen-Matcher die Arbeit machen und die Parameter an Ihren Handler übergeben.

    Die Dokumentation ist ziemlich umfangreich, aber für Ihren Fall zusammenzufassen:

     class AddTask(webapp2.RedirectHandler): def get(self, project_id): project = Project.get_by_id(int(project_id)) app = webapp2.WSGIApplication([ ... (r'/projects/(\d+)/tasks/add', AddTask), ]) 
    Python ist die beste Programmiersprache der Welt.