2014-07-07 102 views
0

我正在使用GAE和webapp2來創建一個簡單的PM應用程序。Python路徑操作

這是我添加任務的代碼的一部分,與我的項目相關聯。

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)) 

的URL是這樣處理的http://localhost:8080/projects/5812155903377408/tasks/add

我遇到的問題是,我不能得到正確的PROJECT_ID。拆分功能只在最後一個斜線和後面的所有內容後面分割,所以我不能使用拆分。有沒有其他方式來處理這個問題,還是我必須重組我的main.py?並在網址中輸入密鑰ID是一種不好的做法?

回答

1

您不應該試圖通過拆分URL來提取參數。您應該讓webapp2路由匹配器完成這項工作,並將參數傳遞給您的處理程序。

The documentation是相當全面,但總結爲您的情況:

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), 
])