あなたは正しい軌道に乗っているようです。最後にパスワードが更新された日付を設定し、timedelta が 30 日を超えているかどうかを確認します。30 日を超えている場合は、パスワードの変更ページにリダイレクトします。ログイン ビューは、timedelta が 30 日を超える場合にユーザーをリクエスト オブジェクトに実際にログインさせないことを除いて、基本的に同じままにする必要があります。
from datetime import date, timedelta
from django.contrib.auth import authenticate, login
def my_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
if date.today() - user.password_date > timedelta(days=30):
# Redirect to password change page
else:
login(request, user)
# Redirect to a success page.
else:
# Return a 'disabled account' error message
else:
# Return an 'invalid login' error message.