Django アプリに、ページに表示されているグループ (Django ユーザー グループではなく、アプリのカスタム) に関連するログイン ユーザーのステータスに応じて、次のいずれかを実行する必要があるページがあります。
- ユーザーがグループに参加できる場合は、グループに参加するためのリンクを表示します。
- ユーザーがグループに属している場合は、グループを脱退するためのリンクを表示します。
- ユーザーがグループに参加できない場合は、どちらのリンクも表示しないでください。
これを行う 1 つの方法は、3 つのテンプレート (1 つは参加リンク、1 つは脱退リンク、もう 1 つはリンクなし) を作成し、ビューで適切なテンプレートを選択することです。コードの 1 行だけが異なる 3 つの異なるテンプレートを用意するのはやり過ぎかもしれないと思うので、まだその方法には行っていません。
テンプレートだけを使って条件 1 と 2 の正しいコンテンツを表示することは不可能です。ユーザーとグループは多対多の関係であり、グループ メンバーシップを決定するには、ユーザーをグループに渡すか、グループをユーザーに渡す必要があります。
Django テンプレートでは関数の引数を渡すことができないため、get_context_data
.
def get_context_data(self, **kwargs):
context = super(NetworkDetails, self).get_context_data(**kwargs)
user = ???
context['in_group'] = user.in_group(context['group_detail'])
return context
その場合、そのメソッド内で現在ログインしているユーザーを取得するにはどうすればよいですか? それが不可能な場合、テンプレート以外のどこでその情報を取得できますか? このようなことを行うための受け入れられた方法はありますか?
ありがとう!