そしてfuelphpやるかとおもいきやpyramidでセットアップ

Filed in Jinja | Nginx | Pyramid | Python | SQLAlchemy Leave a comment

phpめんどくさいよ。仕事で使って、なんで要件好きに決められる自分のプロジェクトでも自らphp選択するんだよ。いみがわからない。
ということで、前の記事でphpをアレしてたのは一旦放っておき、愛するPyramidの環境をつくろうと思う。
Nginx+Python+Mysql、Pyramid+Jinja2。個人的にはmaaDBはなんでもいいですけどこの構成が好きです。
まともにアプリ書き終えるとこまで行ったことないですけどね。

pcreateでざざっと作ったあとで思い出す。
昔の記事で、このへんの構成を好みで動かしたやつがあった気がする。プロジェクトテンプレートを作っておけばよかった。手作業はまたディレクトリ指定間違えたりする凡ミスの温床なのよ。

ルート直下にviews.pyとか散らかしたくない

Filed in Jinja | Pyramid | Python Leave a comment

#pcreate -s alchemy Hoge で作ったプロジェクトを例にしています
App/app/views/views.py
とかしたい。

__init__.py

config.scan('.views')

このようにせいと、マニュアルに書いてある
この「.views」ってなんじゃ。ドットから始まるディレクトリ掘るというのはいささか悪趣味に感じるんだけど。

views掘ってみる。__init__.py置く。views.pyをそこに格納。
これだけだと

ImportError: No module named models

なんてerror吐かれて、あたしゃビューの面倒見てんのになんでモデルがしゃしゃり出てくるんだと奇妙な感じ。
なんだろうなあとviews.pyを眺めて、はたと膝を打つ。

from .models import (
    DBSession,
    MyModel,
    )

これだ。

from ..models import (
    DBSession,
    MyModel,
    )

こうする。微妙すぎてあれだけど、「.models」→「..models」になってる。
いつのバージョンだかからこういう指定の仕方できるようになったんですみたいな話を聞いていたのが救いになった。
で、件の「.views」も同じことだったわけかーと納得した次第です。
カレントディレクトリの下のviewsをscanするから「.views」なのねー。

あー。modelのスクリプトもmodels/models.pyとかにしたい場合は、views.pyでのモデルの場所指定も変わるね。

MakoじゃなくてJinja2使いたい

Filed in Jinja | Pyramid | Python Leave a comment

Pyramidのわだいです。

“.mak” または “.mako” で終わるテンプレートファイル名は Mako レンダラー に送られます。
“.html”のような他の拡張子が使いたければ、 main 関数に これを入れてください:
config.add_renderer(“.html”, “pyramid.mako_templating.renderer_factory”)
引用元

で、こういうののjinja2はどうしたらいいのか探してましたのよ。
pyramid.mako_templating.renderer_factory
これはなーに?どういう決まりでこれになってんの。分からない。
あたしはMakoを使うつもりがない。いいテンプレートエンジンなのは知ってる。少し。あたしの好みはJinja2でありGenshiなので、Jinja2が動いてくれないと嫌なのです。
#Genshiはちょっと気難しい子なので最近は避けてます(-_-;

Jinja2のテンプレートを食わせるまではうまく行った。
がしかし、拡張子「.jinja2」が非常に気に入らない。長いしダサいしそもそも数字がついてるのが非常に駄目だ。
あたしゃテンプレートの拡張子.htmlじゃなきゃ嫌なんだよ。
でもなんだか、中のほうで拡張子ごとにゴニョゴニョしている箇所があるらしく、テンプレートファイルとしてhoge.jinja2を単純にhoge.htmlとしてもうまくいかない。

あちこちさまよった結果、

config.add_renderer(".html", "pyramid_jinja2.renderer_factory")

__init__.pyでこうしてやるとうまくいった。.htmlでも食べるようになる。やった。
そもそもこの文字列はどこで見つけたのかというと、site-packagesのpyramid_jinja2見に行って、configure.zcmlつう怪しいファイルの中に書いてあるのを発見したという次第。
見つけ方合ってるのかわかりませんが解決したからいいんだ。

まとめ

当然のこととしてjinja2とpyramid_jinja2はいれとく

development.ini:

[app:main]に追記
jinja2.directories = %(here)s/{アプリ}/templates

pyramid.includesに追記
pyramid_jinja2

アプリ直下の__init__.py:

config = Configurator(settings=settings)
config.include('pyramid_jinja2')
config.add_renderer(".html", "pyramid_jinja2.renderer_factory")

まだ「リソースとビュー」の考えかたは染みこんできてない。
モデルよりフレームワークの仕掛けより、あたしはまず好みのテンプレートエンジンが動かないと気分的に落ち着かず、ただでさえ少ない集中力が減退する構造になっているんです。
というところがすっきりして、ひじょーに、こう、いいですね。
すっきりしました少し。

jinja2

Filed in FormEncode | Jinja | MongoDB Leave a comment

jinja2つかいはじめました。
なにこれすんごい楽。スタックトレースもとれる。
いま作ってるのはこれでいこう。
あたるとおもうんだけどなー。急いでつくろう。

TOP