mixinを使用して、ユーザーがクラスベースのフォームビューを許可する前に認証されているかどうかを確認しています。それは正常に動作しますが、ユーザーが認証されていない場合は、デフォルトのログインパス「/ accounts/profile /」にリダイレクトされます。ドキュメントによると、このパスはLOGIN_REDIRECT_URLを使うか、あるいはsettings.pyのLOGIN_URLを使ってオーバーライドすることができます。しかし、the documentationは、これらの両方がDjango 1.8以降で廃止され、Django 1.10では削除されると述べています。私は1.9であり、将来私のコードを証明したいと思います。非推奨のメソッドを使用しているログインURLまたはログインリダイレクトURLを指定するにはどうすればよいですか?私はmixinのアプローチを放棄しても構わないが、クラスベースのビューの要求に対して手動でチェックを行い、チェックが失敗した場合はそれからリダイレクトする方法は?LOGIN_REDIRECT_URLは推奨されていませんか?
class LoginCheckMixin(UserPassesTestMixin):
def test_func(self):
if 'id_token' in self.request.session:
return validate_google_token(self.request.session['id_token'])
else:
return False
class RegistrationFormView(LoginCheckMixin, FormView):
template_name = 'registration/registration_form.html'
form_class = RegistrationForm
success_url = 'results'
感謝を使用することができます!それは理にかなっている。ハードコードされたURLでうまくいきました。私はURLパターンを試したときにうまくいかなかった。 LOGIN_URL = 'ログイン'の結果:NoReverseMatch 引数 '()'とキーワード引数 '{}'を使用して 'ログイン'を逆転させました。 0個のパターンが試されました:[] – AdamG
URLパターン名を使用すると効果があります。 URLを含めるために名前空間を使用していますか?もしそうなら、 'LOGIN_URL = ':login''を実行する必要があります。 –
Alasdair