5

私はwebapp2から始めています。私の英語はあまり上手ではないので、例を使って私の問題を説明します: 車の情報を処理するアプリケーションを構築しているとします。

私はこれらのハンドラーを持っています:

  • ViewHandler: すべての情報 (エンジン、年、ブランド、モデルなど) を含む 1 台の車のビューを表示します。
  • ListHandler: ビュー ページへのリンクとともに、アプリケーション内のすべての車を表示します。

問題は、単一のビューへのリンクを作成できないことです。

テンプレートでこれを行うことができます:

<ul> 
  <li><a href='/cars/view/{{car.id}}'>{{car.model}}</a></li> 
</ul> 

しかし、それは好きではありません (結局のところ、DRY 原則はどこにありますか?) 次のように、テンプレート内の URL を解決して、django に似た方法があるかどうか疑問に思っていました:

<ul> 
  <li><a href='{% url cars.view car.id}'>{{car.model}}</a></li> 
</ul> 

テンプレにないかも。webapp2.url_for() を試しましたが、役に立ちませんでした。

どうもありがとう!

4

1 に答える 1

8

webapp2.uri_for() が最善の策ですが、名前付きルーティングと組み合わせて使用​​する必要があります。ここで uri_for と組み合わせた webapp2 ルーティングの詳細を読むことができます: http://webapp-improved.appspot.com/guide/routing.html

上記の記事の例を次に示します。

app = webapp2.WSGIApplication([
    webapp2.Route('/', handler='handlers.HomeHandler', name='home'),
    webapp2.Route('/wiki', handler=WikiHandler, name='wiki'),
    webapp2.Route('/wiki/<page>', handler=WikiHandler, name='wiki-page'),
])

# /
uri = uri_for('home')

# http://localhost:8080/
uri = uri_for('home', _full=True)

# /wiki
uri = uri_for('wiki')

# http://localhost:8080/wiki
uri = uri_for('wiki', _full=True)

# http://localhost:8080/wiki#my-heading
uri = uri_for('wiki', _full=True, _fragment='my-heading')

# /wiki/my-first-page
uri = uri_for('wiki-page', page='my-first-page')

# /wiki/my-first-page?format=atom
uri = uri_for('wiki-page', page='my-first-page', format='atom')
于 2012-01-17T11:17:13.647 に答える