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?

  • Idioten führen zu App-Engine und Memcache
  • Was ist ein guter Weg, um relative Pfade in Google App Engine zu finden?
  • Gibt es eine Möglichkeit, Google Cloud Endpunkte proto Datenspeicher zu sichern?
  • WTForms-Fehler: TypeError: formdata sollte ein Multidict-Typ-Wrapper sein
  • NameError: globaler Name 'execfile' ist nicht definiert, um eine App auf Google App Engine Launcher auszuführen
  • Richten Sie mehrere Session-Handler auf python webapp2 ein
  • Gedächtnisverbrauch unterscheidet sich stark (und merkwürdig) zwischen Frontend und Backend
  • Bilder mit Google benutzerdefinierte Suche api herunterladen
  • 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.