Esempio n. 1
0
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)
Esempio n. 2
0
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})
Esempio n. 3
0
 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