2012-01-13 5 views
5

私はwebapp2から始まります。私の英語はあまり良くないので、私は の例を使って問題を説明します: 私は車の情報を扱うアプリケーションを作っているとします。webapp2 - テンプレートのURLを元に戻す方法

私はこれらのハンドラをしました:

  • のViewHandler:その 情報のすべてを、単一の車のためのビューが表示されます(ETCエンジン、今年、ブランド、モデル、...)
  • ListHandler :アプリケーションにすべての車が表示され、表示ページへのリンクは です。

問題は、私は単一のビューへのリンクを構築できないということです。ジャンゴに類似し、それを行うにはいくつかの方法があります場合、私は思っていた

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

が、そのようにしませんが(すべての後にDRY原則だ?) 、 :

私はテンプレートでこれを行うことができますテンプレート内のURLを解決するには、次のようにします。

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

多分テンプレートには含まれていません。私はwebapp2.url_for()を試しましたが、 は役に立ちませんでした。

ありがとうございます!

+2

http://webapp-improved.appspot.com/guide/routing.html

ここでそれがどのように見えるかの上記の記事からの例です: http://stackoverflow.com/questions/7081250/webapp2-jinja2-how-can-i-get-uri-for-working-in-jinja2-views – gmunkhbaatarmn

+0

私はジンジャーを使用していませんが、私は見てみましょう多分変化するかもしれない。ありがとう。 – santiagobasulto

答えて

8

webapp2.uri_for()が最適ですが、名前付きルーティングと組み合わせて使用​​する必要があります。あなたはここにuri_forとの組み合わせでルーティングwebapp2を詳細を読むことができます:あなたはそれがすでにstackoverflowのに答えるwebapp2を+ Jinja2のを使用している場合

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') 
+0

文書リンクがhttp://webapp2.readthedocs.io/ja/latest/guide/routing.htmlに変更されました – igniteflow

関連する問題