1

ユーザーオブジェクトをすべてのリクエストに利用できるようにするためのクックブックの記事を読みましたが、問題に関連しているかどうかがわからないため、完全には理解できない場合があります。

作業中のサイトでかなりの数のテンプレートをレンダリングしており、テンプレートごとに必要なユーザー情報が異なります。たとえば、SOのこのページのように、すべてのページにユーザー名、ポイント、通知の数、バッジの数などを表示する必要があります。これらの情報はすべて持っていますが、送信する各リクエスト辞書に追加する必要があります。そのようなテンプレート:

return dict(page=page, name=name, save_url=save_url,
                logged_in=authenticated_userid(request), title='add new', url='/new', points=points, num_badges=badges)

これらすべてを一度組み合わせて、各ビューに1つのエントリを送信する方法はありますか?毎回同じクエリを実行するのは良くないことは確かですが、ビューごとに入力しなければならないのも面倒です。助言がありますか?

4

1 に答える 1

1

最も簡単な方法は、1つのメソッドで「共通」情報を生成し、dictを返し、その情報でローカルビューのdictを更新することです。

local = dict(page=page, name=name, save_url=save_url, title='add new',
     url='/new', points=points, num_badges=badges)
local.update(retrieve_common_information(request))
return local

もう1つの方法は、pyramid_viewgroup(ドキュメントが新しい場所に配置されている)のようなものを使用することです。この場合、ページの一般的な「スニペット」のレンダリングを個別のビューに委任します。

そのようなビューの1つは、レンダリングしたい一般的なユーザー情報を処理し、どこでも再利用できます。

于 2012-07-08T20:24:48.627 に答える