Conditionaly登录后重定向用户

时间:2018-05-15 22:42:20

标签: python django

我查看了Django -- Conditional Login RedirectConditional login redirect in Django,但都没有解决我当前的问题。

我想要做的是在用户成功登录后检查用户的属性。如果属性处于良好状态,请将它们直接发送到next URL参数指定的页面,否则发送它们修复该属性,然后将其转发到next页面。

到目前为止,我已成功将用户发送到next后修复了该属性,但登录后我无法有条件地重定向。

我知道我可以设置LOGIN_REDIRECT_URL,但这仅适用于next中没有值的情况。

1 个答案:

答案 0 :(得分:2)

我需要做的是创建基于LoginView的视图,并使用get_redirect_url方法检查属性。

views.py

from django.contrib.auth.views import LoginView
from django.shortcuts import resolve_url

def passes_test(a_value):
    #test the value here
    return False  

class PropertyCheckLoginView(LoginView):
  def get_redirect_url(self):
    redirect_url = super().get_redirect_url()
    user = self.request.user
    if not passes_test(user.property_to_test):
      redirect_url = resolve_url('url_to_fixing_form/?next='+redirect_url)
    return redirect_url

然后在urls.py中添加或更改login网址:

urlpatterns = [
  ...,
  url(r'^login/$', PropertyCheckLoginView.as_view(),  name='login'),
  ...,
]