2014-07-07 100 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), 
])