1

app.yaml ファイルに、URL マッピングを指定する 2 行を追加しました。

  • URL: /blog/.* スクリプト: blog.app

  • url: / スクリプト: home.app

問題は、「uri_for」関数を使用して home.py のブログ モジュールの URL を生成できないことです。これは、ホーム モードにルートが追加されていない場合です。

ホームモジュールのコードは次のとおりです。

    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

これらのルートを 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 はありません。

于 2013-09-12T18:03:20.730 に答える