私はクラスベースのビューを使用することはあまり快適ではありませんが、私は自分の特典を認識していますので、もっと頻繁に使用するようにしています。クラスベースのビュー:パーミッションを確認する場所は?
特定のエンティティを管理するために、パスパラメータ:manage/:id
を受け取るビューがあります。
class MyView(TemplateView):
template_name = '...'
def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['entity'] = get_object_or_404(Entity, pk=self.args[0])
return context
Entity
には、特別なアクションを実行する許可ユーザーのリストが含まれています。このビューMyView
は、これらの特別なアクションの1つです。
ビューのデコレータを作ってみましたが、最初にEntity
を見つける必要がありましたので、その方法をどうやって確認するかはわかりませんでした。
今、私はcheck_permission(request, entity)
機能を持っており、現在のユーザーがこれらの許可されたユーザーの1つであるかどうかを確認します。
私の質問では、これらのビューのいずれかになるのようなクラスベースのビューでこの機能を「特別なアクション」と呼ぶべきですか?
get_context_data()
から電話する必要がありますか?
「エンティティ」はどこで取得できますか? 'dispatch'と' get_context_data'の両方で 'get_object_or_404'をする必要がありますか? – dabadaba
'entity'は' Entity'のインスタンスですか?私の頭の上から覚えていますが、* args'と '** kwargs'か' self.args'のどちらかで(get_context_data()と同じ方法で)データを取得するのに必要なデータがあります。 'self.kwargs' – yedpodtrzitko
それが私の心配だと確信しています、私はそれを2回取得する必要がありますか? 'get_object_or_404(Entity、pk = self.args [0])'だけを1回だけ行うことはできませんか? – dabadaba