2種類のユーザー用に1つのLoginFormがあります。ここまでは問題ありません。問題は、どのビューでもLoginRequiredMixin
を実行したときに発生します。理由はわかりませんが、ログインフォームのsuccess_urlにリダイレクトされています。ここに私のLoginFormがあります:djangoの2種類のアカウントとLoginRequiredMixinの1つのログインフォーム
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
と私の見解:http://127.0.0.1:8000/entrar/?next=/panel/detalle-solicitud/declaracion-de-renta
:
class SendQuoteView(LoginRequiredMixin,VerifiedUserMixin,FormMixin,DetailView):
login_url = '/entrar/'
model = Request
form_class = SendQuoteForm
template_name = 'send_quote.html'
のは、認証されていないユーザーがアクセスしようとしたとき、これはURLであるとしましょう。とができますユーザーが/panel/detalle-solicitud/declaracion-de-renta
にリダイレクトする必要がなく、その代わりにnext
変数を取得する唯一のテストのために、/panel/inicio/
にform_valid
新form_valid
方法のinstrucionのURLをリダイレクトしている「is_professional
は」それはsuposeのパーマを持って言います:
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
'next'変数を' form_valid'メソッドから得るのに問題はありません。 'self.request.GET'を使っていることを確認してください。私は前に' request.GET'を書いていました。 – Alasdair
それは動作しません、私のform_validメソッドを見て、何が間違っている?常に「なし」と印刷しています。私はあなたの質問を編集しました – dfrojas