def my_login_view(request, template_name='registration/login.html', redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, extra_context=None, redirect_authenticated_user=False): redirect_to = request.POST.get(redirect_field_name, request.GET.get(redirect_field_name, '')) if redirect_authenticated_user and request.user.is_authenticated: redirect_to = _get_login_redirect_url(request, redirect_to) if redirect_to == request.path: raise ValueError( "Redirection loop for authenticated user detected. Check that " "your LOGIN_REDIRECT_URL doesn't point to a login page.") return HttpResponseRedirect(redirect_to) elif request.method == "POST": form = authentication_form(request, data=request.POST) if form.is_valid(): auth_login(request, form.get_user()) return HttpResponse("OK") else: form = authentication_form(request) current_site = get_current_site(request) context = { 'form': form, redirect_field_name: redirect_to, 'site': current_site, 'site_name': current_site.name, } if extra_context is not None: context.update(extra_context) return TemplateResponse(request, template_name, context)
def user_login(request): # refer to auth.views.login redirect_to = request.POST.get('next', request.GET.get('next', '')) redirect_to = _get_login_redirect_url(request, redirect_to) if request.method == 'POST': form = LoginForm(data=request.POST) if form.is_valid(): cd = form.cleaned_data user = authenticate(username=cd['username'], password=cd['password']) if user is not None: login(request, user) return HttpResponseRedirect(redirect_to) else: messages.error(request, '登入失敗,請輸入正確的帳號及密碼') else: form = LoginForm() return render(request, 'accounts/login.html', {'form': form})
def get_success_url(self): request = self.request redirect_to = request.POST.get( REDIRECT_FIELD_NAME, request.GET.get(REDIRECT_FIELD_NAME, '')) redirect_to = _get_login_redirect_url(request, redirect_to) return redirect_to