2017-01-26 5 views
0

私はDjangoでアプリケーションを構築しており、認証されたユーザーのホームページを設定したいと考えています。ホームページにDjangoのDetailView(または組み込みのビュークラス)を使用するにはどうすればいいですか?

私はページに表示したい詳細が特定されたユーザーのものであることを考えると、内蔵されたgeneric.DetailViewを使用するのが最善であると考えました。つまり、このクラスはURLを介してターゲットエンティティのIDを小数のpk引数として受け取る必要があります。しかし、エンティティに関する情報はrequest.userにあります。この情報を繰り返して、ユーザーIDをURLに表示しないようにしたいと思います。

get_objectメソッド内でrequestを取得すると、そのトリックが実行されますが、引数は使用されません。

これは可能ですか?これは良いアイデアですか?私に欠けている可能性のある選択肢はありますか?

答えて

1

DetailViewは、オブジェクトをフェッチするためにpkまたはslugが必要です。 get_objectを上書きする場合は必須ではありません。 get_objectメソッドでは、self.request.userでユーザーにアクセスできます。

最後に、ビューにログインしたユーザーが使用されている場合は、LoginRequiredMixinを使用して、ログインしたユーザーのみがビューにアクセスできるようにすることができます。

from django.contrib.auth.mixins import LoginRequiredMixin 

class MyDetailView(LoginRequiredMixin, DetailView): 
    ... 
    def get_object(self): 
     return self.request.user 
+0

これは簡単でした...ありがとう!まだ...それは良い考えですか? – coya

関連する問題