我查看了Django -- Conditional Login Redirect和Conditional login redirect in Django,但都没有解决我当前的问题。
我想要做的是在用户成功登录后检查用户的属性。如果属性处于良好状态,请将它们直接发送到next
URL参数指定的页面,否则发送它们修复该属性,然后将其转发到next
页面。
到目前为止,我已成功将用户发送到next
后修复了该属性,但登录后我无法有条件地重定向。
我知道我可以设置LOGIN_REDIRECT_URL
,但这仅适用于next
中没有值的情况。
答案 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'),
...,
]