我正在使用mixin检查用户是否经过身份验证,然后才允许他们进入基于类的formview。它工作正常,但如果用户未经过身份验证,则会将其重定向到' / accounts / profile /'的默认登录路径。根据文档,可以使用LOGIN_REDIRECT_URL或甚至settings.py中的LOGIN_URL覆盖此路径。但是,the documentation表示从Django 1.8开始,这两个都被弃用,并将在Django 1.10中删除。我在1.9,并希望将来证明我的代码。如何指定登录URL或登录重定向URL使用非弃用方法?我甚至愿意放弃mixin方法,但是如果检查失败,我将如何根据基于类的视图的请求执行手动检查,然后重定向呢?
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'
答案 0 :(得分:3)
LOGIN_URL
和LOGIN_REDIRECT_URL
。
在Django 1.8中,不推荐使用虚线Python路径作为这些设置的值。说你的登录网址是:
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