django で views.py の関数の前に前処理を入れたいのだが、どうすれば良いかわからない
今現在
def index(request): return render(request, 'hoge/index.html') // この hoge と hoge2、hoge3 の関数に入る前に、前処理を入れたい // ログインしていなかったら、ログイン画面にリダイレクトさせたい(session に user_id が無ければリダイレクトしたい) def hoge(request): return render(request, 'hoge/hoge.html') def hoge2(request): return render(request, 'hoge/hoge2.html') def hoge3(request): return render(request, 'hoge/hoge3.html') ↓ // 今現状このように書いています def hoge(request): if not 'user_id' in request.session: return redirecrt('/login') return render(request, 'hoge/hoge.html') def hoge2(request): if not 'user_id' in request.session: return redirecrt('/login') return render(request, 'hoge/hoge2.html') def hoge3(request): if not 'user_id' in request.session: return redirecrt('/login') return render(request, 'hoge/hoge3.html')
この hoge、hoge2、hoge3 で同じ処理を書いているので、それをまとめたいです。
Laravel ではコントローラーで前処理として、 __construct
があると思うのですが、django でもこのような前処理を実装したい。
試したこと
この関数を class
にまとめると、 __init__
と言う処理が使える?ようになる?とのことだと思いますが、 class
にまとめる方法がわからず。。。
あと、ミドルウェアでの前処理も試しましたが、うまくいかず・・・
ミドルウェアで試したコード
from django.shortcuts import redirect class SimpleMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if not 'user_id' in request.session: return redirecrt('/login')
こちらを試してみましたが、うまく行きませんでした。
どなたかわかるかたいましたら、ご教示願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/30 00:49
2019/12/30 03:34
退会済みユーザー
2019/12/30 04:38