2012-03-18 8 views

答えて

3

SimpleTemplateでvanilla Bottleを使用している場合は、私が遭遇した解決策があります。

私のサイトでは、すべてのテンプレートの一部の機能にアクセスする必要がありましたが、app.get_urlは明らかにその1つです。これは私のために働いた:

# after app creation, but before the views 
SimpleTemplate.defaults["get_url"] = app.get_url 
SimpleTemplate.defaults["url"] = lambda: request.url 
SimpleTemplate.defaults["fullpath"] = lambda: request.fullpath 
SimpleTemplate.defaults["sorted"] = sorted 

これはボトル0.9のように動作します、私はフレームワークのより新しいバージョンではテストしませんでした。

この動作は文書化されていませんが、Marcel Hellkampはthis threadで説明しました。そこには、他の解決法も挙げられます:

  • _varsまたは類似のテンプレート引数でグローバルを渡します。
  • デフォルトを指定するデコレータを作成します。

また、ボトル0.10で、問題に関連する新しい機能がSimpleTemplateテンプレートの名前空間に導入されました:defined, get, and setdefault

0

:この同じソリューションは、他のテンプレートエンジンで使用することができます。このテクニックはまったく同じですが、BaseTemplate(すべてのテンプレートクラスで使用可能)または使用するエンジンのクラスを使用します。

関連する問題