Django의 authenticate 및 login 모듈

3535 단어
Django는 로그인과 종료를 처리하기 위해 내장된 보기 (view) 함수를 제공합니다. Django는 두 개의 함수를 제공하여django를 실행합니다.contrib.auth의 동작: authenticate () 와login ().
인증된 사용자 이름과 비밀번호는 authenticate () 함수를 사용합니다.이것은 사용자 이름username과 비밀번호password 두 개의 매개 변수를 받아들이고, 주어진 사용자 이름이 합법적인 상황에서 User 대상을 되돌려줍니다.암호가 올바르지 않으면 authenticate()가 None으로 돌아갑니다.
>>> from django.contrib import auth
>>> user = auth.authenticate(username='john', password='secret')
>>> if user is not None:
...   print "Correct!"
... else:
...   print "Invalid password."

로그인 및 검증
authenticate () 는 사용자의 인증서를 검증할 뿐입니다.한 사용자에게 로그인하려면login () 을 사용하십시오.이 함수는 HttpRequest 개체와 User 개체를 매개 변수로 받아들여 Django의 세션 (session) 프레임워크를 사용하여 사용자의 ID를 세션에 저장합니다.
다음 예에서는 한 뷰에서 authenticate ()와 login () 함수를 모두 사용하는 방법을 보여 줍니다.
from django.contrib import auth

def login_view(request):
  username = request.POST.get('username', '')
  password = request.POST.get('password', '')
  user = auth.authenticate(username=username, password=password)
  if user is not None and user.is_active:
    # Correct password, and the user is marked "active"
    auth.login(request, user)
    # Redirect to a success page.
    return HttpResponseRedirect("/account/loggedin/")
  else:
    # Show an error page
    return HttpResponseRedirect("/account/invalid/")

여기서 재미있는 것은user.is_active 사용자 이름 비밀번호가 유효한지 판단하는 데 쓰인다.
사용자 로그아웃
사용자를 로그아웃하고 보기에서 사용하십시오 django.contrib.auth.logout().이것은 HttpRequest 대상을 받아들이고 값을 되돌려 주지 않기 때문에 값을 되돌려 주지 않기 때문에 페이지를 되돌려야 합니다.
from django.contrib import auth
 
def logout_view(request):
  auth.logout(request)
  # Redirect to a success page.
  return HttpResponseRedirect("/account/loggedout/")

주의해야 할 것은 사용자가 로그인하지 않아도 logout () 는 어떠한 이상도 던지지 않습니다.
Django에서 일반 로그인 및 종료 함수 사용
실제에서 당신은 일반적으로 로그인/로그인 함수를 직접 쓸 필요가 없다.인증 시스템은 로그인과 로그인을 처리하는 데 사용되는 예시적인 보기를 제공합니다.인증 보기를 사용하는 첫 번째 단계는 URL conf에 기록하는 것입니다.너는 이렇게 써야 한다.
from django.contrib.auth.views import login, logout
 
urlpatterns = patterns('',
  # existing patterns here...
  (r'^accounts/login/$', login),
  (r'^accounts/logout/$', logout),
)
/accounts/login//accounts/logout/는 Django에서 제공하는 뷰의 기본 URL입니다.
로그인 페이지 쓰기
생략된 경우,login 보기는registragiton/login을 렌더링합니다.html 템플릿 (보기의 추가 매개 변수인template name을 통해 이 템플릿 이름을 수정할 수 있습니다).이 폼은username과password역을 포함해야 합니다.다음과 같은 예: 간단한template는 보기에 이렇다
{% extends "base.html" %}
 
{% block content %}
 
 {% if form.errors %}
  

Sorry, that's not a valid username or password

{% endif %}
{% endblock %}

사용자가 로그인에 성공하면 기본값은 로 리디렉션됩니다/accounts/profile.로그인 후 URL을 다시 지정하는next 숨김 영역을 저장해서 다시 불러올 수 있습니다.보기 함수에 값을 GET 매개 변수로 보낼 수도 있습니다. 변수next 형식으로 상하문에 저장됩니다. 그러면 숨겨진 영역에 사용할 수 있습니다.
logout 보기가 좀 다릅니다.기본적으로 템플릿 registration/logged_out.html 을 렌더링합니다. (이 보기는 성공적으로 종료한 정보를 포함합니다.)보기에는 인자next 도 포함할 수 있습니다페이지는 종료 후 방향을 바꾸는 데 사용됩니다.

좋은 웹페이지 즐겨찾기