1

在 app.yaml 文件中,我放了 2 行来指定 url 映射:

  • 网址:/blog/.* 脚本:blog.app

  • 网址:/脚本:home.app

问题是我不能使用“uri_for”函数在home.py中为博客模块生成一个url,如果home moudle中没有添加路由:

这是 home 模块中的代码:

    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) }},它就无法工作。

4

1 回答 1

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) 在每种方法中,我都在为获取和发布创建功能,因此没有用于编辑和更新的离散 RESTful URL。

于 2013-09-12T18:03:20.730 回答