在app.yaml文件中,我添加了两行来指定url映射:
url:/blog/.* 脚本:blog.app
网址:/ 脚本:home.app
问题是我不能使用“uri_for”函数在home.py中为博客模块生成一个url,如果在home moudle中没有添加Route:
这是家庭模块中的代码:
app = webapp2.WSGIApplication([
webapp2.Route(r'/', handler=HomeHandler, name='home')
], debug = SITE_CONFIG['is_debug'], config=SITE_CONFIG)
和blog.py中的代码:
app = webapp2.WSGIApplication([
webapp2.Route(r'/blog/<blog_id:\d+>', handler=BlogHandler, name="blog")
], debug = SITE_CONFIG['is_debug'], config=SITE_CONFIG)
所以,如果我在home.html中有这样的代码:{{uri_for('blog',blog_id = blabla)}},它就无法工作。
答案 0 :(得分:1)
您应该将这些路线合并到一个应用中。
app = webapp2.WSGIApplication([
webapp2.Route(r'/', handler=HomeHandler, name='home'),
webapp2.Route(r'/blog/<blog_id:\d+>', handler=BlogHandler, name="blog")
], debug = SITE_CONFIG['is_debug'], config=SITE_CONFIG)
实际上那些只是视图博客帖子路线。
如果您想要完整的CRUD应用,可能需要添加更多。
app = webapp2.WSGIApplication([
webapp2.Route(r'/admin/blog', handler='admin.AdminBlogHandler:list, name="admin.blog.list"),
webapp2.Route(r'/admin/blog/new', handler='admin.AdminBlogHandler:new', name='admin.blog.edit'),
webapp2.Route(r'/admin/blog/<id:[^/]+>/edit', handler='admin.AdminBlogHandler:edit', name='admin.blog.edit'),
webapp2.Route(r'/admin/blog/<id:[^/]+>', handler='admin.AdminBlogHandler:view', name='admin.blog.view')
], debug = SITE_CONFIG['is_debug'], config=SITE_CONFIG)
请注意以下示例:
1)您为一个名称添加前缀以从另一个文件加载处理程序(admin.AdminBlogHandler将在'admin.py'中查找'class AdminBlogHandler'
2)指定在冒号后的处理程序名称之后运行的方法。
3)在每种方法中,我都在为get和post创建功能,因此没有用于编辑和更新的离散RESTful URL。