Enviar pesquisa
Carregar
Pyramidのrendererをカスタマイズする
•
Transferir como PPTX, PDF
•
0 gostou
•
1,777 visualizações
M
Moriyoshi Koizumi
Seguir
PythonのWebアプリケーションフレームワークであるPyramidのrendererをカスタマイズする方法を考察します。1.4対応。
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 10
Baixar agora
Recomendados
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
Futomi Hatano
20141101 handson
20141101 handson
Six Apart
BMXUG つきじ#4
BMXUG つきじ#4
K Kimura
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Moriyoshi Koizumi
PHP7を魔改造した話
PHP7を魔改造した話
Moriyoshi Koizumi
PHPのすべらない話
PHPのすべらない話
Moriyoshi Koizumi
PHPのすべらない話#3
PHPのすべらない話#3
Moriyoshi Koizumi
HLSについて知っていることを話します
HLSについて知っていることを話します
Moriyoshi Koizumi
Recomendados
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
Futomi Hatano
20141101 handson
20141101 handson
Six Apart
BMXUG つきじ#4
BMXUG つきじ#4
K Kimura
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Authentication, Authorization, OAuth, OpenID Connect and Pyramid
Moriyoshi Koizumi
PHP7を魔改造した話
PHP7を魔改造した話
Moriyoshi Koizumi
PHPのすべらない話
PHPのすべらない話
Moriyoshi Koizumi
PHPのすべらない話#3
PHPのすべらない話#3
Moriyoshi Koizumi
HLSについて知っていることを話します
HLSについて知っていることを話します
Moriyoshi Koizumi
Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
Hacking Go Compiler Internals / GoCon 2014 Autumn
Hacking Go Compiler Internals / GoCon 2014 Autumn
Moriyoshi Koizumi
All I know about rsc.io/c2go
All I know about rsc.io/c2go
Moriyoshi Koizumi
Introducing E-Cell 3.2
Introducing E-Cell 3.2
Moriyoshi Koizumi
LLの虎 semifinal: 殺伐Python
LLの虎 semifinal: 殺伐Python
Moriyoshi Koizumi
GoでKVSを書けるのか
GoでKVSを書けるのか
Moriyoshi Koizumi
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
Kenji Shirane
20141017 introduce razor
20141017 introduce razor
do_aki
20141206 handson
20141206 handson
Six Apart
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
初めてのPadrino
初めてのPadrino
Takeshi Yabe
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
Akihito Koriyama
ASP.NET MVC 1.0
ASP.NET MVC 1.0
Shinpei Ohtani
RESTとRailsスタイル
RESTとRailsスタイル
Toru Kawamura
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
CS-Cart デベロッパーミーティング 2015-06-28
CS-Cart デベロッパーミーティング 2015-06-28
Toshihiro Yoshiura
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Yu Ito
Uguisudani
Uguisudani
Moriyoshi Koizumi
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
Moriyoshi Koizumi
Mais conteúdo relacionado
Destaque
Goをカンストさせる話
Goをカンストさせる話
Moriyoshi Koizumi
Hacking Go Compiler Internals / GoCon 2014 Autumn
Hacking Go Compiler Internals / GoCon 2014 Autumn
Moriyoshi Koizumi
All I know about rsc.io/c2go
All I know about rsc.io/c2go
Moriyoshi Koizumi
Introducing E-Cell 3.2
Introducing E-Cell 3.2
Moriyoshi Koizumi
LLの虎 semifinal: 殺伐Python
LLの虎 semifinal: 殺伐Python
Moriyoshi Koizumi
GoでKVSを書けるのか
GoでKVSを書けるのか
Moriyoshi Koizumi
Destaque
(6)
Goをカンストさせる話
Goをカンストさせる話
Hacking Go Compiler Internals / GoCon 2014 Autumn
Hacking Go Compiler Internals / GoCon 2014 Autumn
All I know about rsc.io/c2go
All I know about rsc.io/c2go
Introducing E-Cell 3.2
Introducing E-Cell 3.2
LLの虎 semifinal: 殺伐Python
LLの虎 semifinal: 殺伐Python
GoでKVSを書けるのか
GoでKVSを書けるのか
Semelhante a Pyramidのrendererをカスタマイズする
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
Narami Kiyokura
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
Kenji Shirane
20141017 introduce razor
20141017 introduce razor
do_aki
20141206 handson
20141206 handson
Six Apart
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Kazumi IWANAGA
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
初めてのPadrino
初めてのPadrino
Takeshi Yabe
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
Akihito Koriyama
ASP.NET MVC 1.0
ASP.NET MVC 1.0
Shinpei Ohtani
RESTとRailsスタイル
RESTとRailsスタイル
Toru Kawamura
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
KEISUKE KONISHI
CS-Cart デベロッパーミーティング 2015-06-28
CS-Cart デベロッパーミーティング 2015-06-28
Toshihiro Yoshiura
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Yu Ito
Semelhante a Pyramidのrendererをカスタマイズする
(14)
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
20141017 introduce razor
20141017 introduce razor
20141206 handson
20141206 handson
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Azure でサーバーレス、 Infrastructure as Code どうしてますか?
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
初めてのPadrino
初めてのPadrino
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
ASP.NET MVC 1.0
ASP.NET MVC 1.0
RESTとRailsスタイル
RESTとRailsスタイル
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
CS-Cart デベロッパーミーティング 2015-06-28
CS-Cart デベロッパーミーティング 2015-06-28
シラサギハンズオン 大阪
シラサギハンズオン 大阪
Mais de Moriyoshi Koizumi
Uguisudani
Uguisudani
Moriyoshi Koizumi
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
Moriyoshi Koizumi
Ik in action
Ik in action
Moriyoshi Koizumi
Nginx lua
Nginx lua
Moriyoshi Koizumi
Haxeについて
Haxeについて
Moriyoshi Koizumi
Gocon2013
Gocon2013
Moriyoshi Koizumi
PHP language update 201211
PHP language update 201211
Moriyoshi Koizumi
mod_himoteからはじめよう
mod_himoteからはじめよう
Moriyoshi Koizumi
HPHPは約束の地なのか
HPHPは約束の地なのか
Moriyoshi Koizumi
Pyfes201110
Pyfes201110
Moriyoshi Koizumi
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
Aaなゲームをjsで
Aaなゲームをjsで
Moriyoshi Koizumi
Aaなゲームをjsで
Aaなゲームをjsで
Moriyoshi Koizumi
ctypes拡張モジュール
ctypes拡張モジュール
Moriyoshi Koizumi
10〜30分で何となく分かるGo
10〜30分で何となく分かるGo
Moriyoshi Koizumi
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
Moriyoshi Koizumi
X / DRM (Direct Rendering Manager) Architectural Overview
X / DRM (Direct Rendering Manager) Architectural Overview
Moriyoshi Koizumi
Mais de Moriyoshi Koizumi
(17)
Uguisudani
Uguisudani
よいことも悪いこともぜんぶPHPが教えてくれた
よいことも悪いこともぜんぶPHPが教えてくれた
Ik in action
Ik in action
Nginx lua
Nginx lua
Haxeについて
Haxeについて
Gocon2013
Gocon2013
PHP language update 201211
PHP language update 201211
mod_himoteからはじめよう
mod_himoteからはじめよう
HPHPは約束の地なのか
HPHPは約束の地なのか
Pyfes201110
Pyfes201110
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Aaなゲームをjsで
Aaなゲームをjsで
Aaなゲームをjsで
Aaなゲームをjsで
ctypes拡張モジュール
ctypes拡張モジュール
10〜30分で何となく分かるGo
10〜30分で何となく分かるGo
Phpをいじり倒す10の方法
Phpをいじり倒す10の方法
X / DRM (Direct Rendering Manager) Architectural Overview
X / DRM (Direct Rendering Manager) Architectural Overview
Pyramidのrendererをカスタマイズする
1.
Rendererをカスタマイズす る @moriyoshit For Pylonsはっかそん 2014.11
2.
自己紹介 • Pylonsはっかそん初めてです • 仕事でPyramidを2年ほど…
3.
動機 • Requestによってレンダリングするテンプレートを変えた い • Virtual
hostみたいなものを想定 • それたぶんpyramid_layoutでできるよ? • Exception viewはどうする? • Requestに含まれる情報からレンダリングに必要な情報を 作ってテンプレートに渡したい • たとえば、CSSや画像へのパスなど • これは BeforeRender event で inject してもいいけど、レンダリ ングの文脈でやりたい
4.
add_view permission attr mapper http_cache Predicates request_type / request_method
/ request_param / xhr / containment / wrapper / accept / header / context / decorator / match_param / check_csrf / effective_principals / physical_path Pyramidのレンダリングのしくみ View Deriver RendererHelper route_name renderer Create Parameters Create (caller package) Parameters
5.
Pyramidのレンダリングのしくみ Predicated view Auth debug
view Secured view Wrapped view HTTP cached view Rendered view Mapped view User-supplied view callable View Deriver
6.
Pyramidのレンダリングのしくみ class ViewDeriver(object): def __init__(self,
**kw): self.kw = kw self.registry = kw['registry'] self.authn_policy = self.registry.queryUtility(IAuthenticationPolicy) self.authz_policy = self.registry.queryUtility(IAuthorizationPolicy) self.logger = self.registry.queryUtility(IDebugLogger) def __call__(self, view): return self.attr_wrapped_view( self.predicated_view( self.authdebug_view( self.secured_view( self.owrapped_view( self.http_cached_view( self.decorated_view( self.rendered_view( self.mapped_view( view)))))))))
7.
Pyramidのレンダリングのしくみ Rendered view Mapped view User-supplied view
callable RendererHelper IRendererFactory IRenderer Dict-like Lookup IResponse Create Passing self as IRenderInfo
8.
add_viewでの挙動 if isinstance(renderer, string_types): renderer
= renderers.RendererHelper( name=renderer, package=self.package, registry = self.registry) 渡されたrendererがstring typeであれば RendererHelperでくるむ そうでなければ、RendererHelperとしてそのまま ViewDeriverに渡す
9.
カスタマイズポイント • IRenderFactoryを登録する (add_renderer) •
レンダラのルックアップ方法に縛られる • 拡張子 • フルマッチ • カスタムレンダラにconfiguration時にパラメータを渡す術がな い • RendererHelperを直接add_viewのrendererとして渡す • RendererHelperのコンストラクタに渡すべきconfig.packageと config.registryは別途取得しておかないといけない • @view_config decorator と相性が悪すぎる
10.
結局どうしているか • ILateBoundRendererHelper というインターフェイスを 勝手に定義、コンストラクタでpackageとregistryを渡 すのではなくて後からvenusianのscan時にbindできる ようにした •
bind(package, registry) • 上記のインターフェイスに対応したadd_viewとして add_lbr_viewというdirectiveを追加w • add_lbr_viewに対応した@lbr_view_configを作った
Baixar agora