現在ログインしているユーザーを取得するコードがあります。Djangoビューを保持するDRY
userID = request.session.get("_auth_user_id")
if userID:
loggedin_user = User.objects.get(pk=int(userID))
else:
loggedin_user = None
すべてのページにユーザー名を表示します。私はすべてのビューでコードを入れています現時点では
、すべてのテンプレートにユーザーオブジェクトを渡す
return render_to_response('index.html', {loggedin_user})
これは、DjangoのD.R.Yの倫理に反するように思われます。私はこれを自分自身で繰り返すことができますか?
EDIT:おそらく、ユーザーは悪い例でした。私は、データベースからオブジェクトのリストを取得したい場合はどう
、
items = Item.objects.all()
とeverypageにそれらを一覧表示します。
このコードを記述して、すべてのビューのテンプレートにリストを渡す必要がありますか。または、そのリストをすべてのテンプレートで使用できるようにするコードを一度書くことはできますか?
を参照してください。その後、20個のテンプレートに{%load my _template_tag%}があります...これはDRYではありません –
それを頻繁に使用している場合は、親テンプレートの中で拡張している可能性があります。そのため、1つの場所にしか配置できません。そうでない場合は、おそらくカスタムコンテキストプロセッサを使用できます。 –