2016-03-28 30 views
0

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' 

答えて

3

LOGIN_URLLOGIN_REDIRECT_URLは廃止されていません。

Django 1.8では、点線のPythonパスをこれらの設定の値として使用することは推奨されていません。ログインURLは言う:

url('^login/$', views.login, name='login') 

次は廃止され、

LOGIN_URL = 'path.to.views.login' 

それでも

LOGIN_URL = '/login/' # hardcoded url 

または

LOGIN_URL = 'login' # the name of the url pattern 
+0

感謝を使用することができます!それは理にかなっている。ハードコードされたURLでうまくいきました。私はURLパターンを試したときにうまくいかなかった。 LOGIN_URL = 'ログイン'の結果:NoReverseMatch 引数 '()'とキーワード引数 '{}'を使用して 'ログイン'を逆転させました。 0個のパターンが試されました:[] – AdamG

+2

URLパターン名を使用すると効果があります。 URLを含めるために名前空間を使用していますか?もしそうなら、 'LOGIN_URL = ':login''を実行する必要があります。 – Alasdair

関連する問題