
前提・実現したいこと
Djangoで複数のユーザが使用するアプリケーションを作成しています。
ログインは既にしてるものとして、ユーザIDが付与されたURLにアクセスしたとき、そのIDに該当するユーザ以外は閲覧を拒否したいです。
例)ログインユーザのIDが01
の時は、URLが/polls/01
のみは開けるが、/polls/02
は見れなくする。
発生している問題
これの実現方法として、ログイン中のuserオブジェクトのidと、リクエストしたURLからid部分を抽出して、制限をかけると言った方法は思いついています。
コードとしては以下のような形です。
class HomeView(LoginRequiredMixin, TemplateView): template_name = 'polls/home.html' def get_context_data(self, **kwargs): # request.pathからid部分を抽出('/polls/01'が入ってるので、01だけ取る) url_id = self.request.path.split('/')[-2] # ログイン中のuser_idとurlのidの一致チェック if self.request.user.user_id == url_id: # 正常処理 else # エラー処理 403とかに飛ばす
これで実現できると思うのですが、これは一般的な方法でしょうか?
他にいい方法やDjangoのメソッドがあれば教えていただきたいです。
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
Python3.8.5
Django3.1.0


回答2件
あなたの回答
tips
プレビュー