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?

  • Wenn Google App Engine cron Jobs eine 10-Minuten-Grenze haben, warum bekomme ich dann einen DeadlineExceededError nach den normalen 30 Sekunden?
  • Wie bekomme ich Twitter's Streaming / Filter Feed mit urllib2 / httplib?
  • Wie kann ich die neueste Version eines Datensatzes im GAE-Replikations-Datenspeicher abrufen?
  • Webapp2 + jinja2: Wie kann ich uri_for () in jinja2-views arbeiten?
  • In Webapp2, wie bekomme ich eine Liste aller Routen-URIs?
  • Appengine Kanal keine Nachrichten kommen
  • Abrufen eines zufälligen Datensatzes aus dem Google App Engine-Datenspeicher?
  • Verwenden von sqlite3 in Google App Engine?
  • 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.