我有兩種類型的用戶的LoginForm,直到這裏一切正常。問題出現在我爲任何視圖執行LoginRequiredMixin
時,我不知道爲什麼,但是重定向到登錄表單的success_url。這裏是我的登錄表單:Django中的兩種帳戶和LoginRequiredMixin的一個登錄表單
form_valid
方法重定向用戶取決於他擁有的許可證。
class LoginView(FormView):
form_class = AuthenticationForm
template_name = 'login.html'
def dispatch(self,request,*args,**kwargs):
if request.user.is_authenticated() and request.user.has_perm('users.is_contribuyente'):
return HttpResponseRedirect('/solicitudes-enviadas')
if request.user.is_authenticated() and request.user.has_perm('users.is_professional'):
return HttpResponseRedirect('/panel/inicio')
return super(LoginView,self).dispatch(request,*args,**kwargs)
def form_valid(self,form):
login(self.request,form.get_user())
if self.request.user.has_perm('users.is_contribuyente'):
return redirect('/solicitudes-enviadas')
if self.request.user.has_perm('users.is_professional'):
return redirect('/panel/inicio')
這裏我有一個LoginRequiredMixin
觀點:
class SendQuoteView(LoginRequiredMixin,VerifiedUserMixin,FormMixin,DetailView):
login_url = '/entrar/'
model = Request
form_class = SendQuoteForm
template_name = 'send_quote.html'
比方說,這是URL時未通過身份驗證的用戶試圖訪問:http://127.0.0.1:8000/entrar/?next=/panel/detalle-solicitud/declaracion-de-renta
。並讓說,用戶的「is_professional
」這supose燙髮有重定向到/panel/detalle-solicitud/declaracion-de-renta
但不是被重定向到/panel/inicio/
,form_valid
新form_valid
方法instrucion的URL只爲測試,以獲得next
變量:
def form_valid(self, form):
#login(self.request, form.get_user())
next = self.request.GET('next')
print next
return super(LoginView, self).form_valid(form)
我該如何實現LoginRequiredMixin的URL?
@Alasdir我實現了它,但form_valid方法不能獲取下一個變量。 – dfrojas
從'form_valid'方法獲取'next'變量應該沒有問題。確保你使用'self.request.GET',我之前寫過'request.GET'。 – Alasdair
它不起作用,看看我的form_valid方法,我做錯了什麼?始終打印「無」。我編輯了我的問題 – dfrojas