0
ユーザーが既に認証されている場合、メインページにリダイレクトします。 だから私は/ /メインにDjango:すでにログインしているユーザーをクラスベースのビューでリダイレクトします
views.py
からのリダイレクトをしたい:
class LoginView(FormView):
form_class = LoginForm
success_url = reverse_lazy('main')
template_name = 'module/login.html'
def form_valid(self, form):
if self.request.user.is_authenticated():
return redirect(settings.LOGIN_REDIRECT_URL)
else:
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user is not None and user.is_active:
login(self.request, user)
return super(LoginView, self).form_valid(form)
else:
return self.form_invalid(form)
settings.py
:
LOGIN_REDIRECT_URL = reverse_lazy('main')
LOGIN_URL = reverse_lazy('login')
LOGOUT_URL = reverse_lazy('logout')
私はget関数を追加することも試みたが、それは自分自身だけで無限回を呼び出します。
def get(self, request, *args, **kwargs):
if request.user.is_authenticated():
return HttpResponseRedirect('main')
else:
return HttpResponseRedirect('/login/')
urls.py
:
url(r'^$', views.LoginView.as_view(), name='login'),
url(r'^login/', views.LoginView.as_view(), name='login'),
あなたのurls.pyは何ですか? – e4c5
コードを更新しました。 – ikreb
ありがとうございます、@ schwobaseegglの解決策は私のために働く。 – ikreb