티스토리 뷰

장고는 로그인,회원가입 등 웹 개발에 필요한 인증기능을 기본적으로 제공하고 있다.

장고 패키지에 포함되어있는 django.contrib.auth 앱이 인증기능을 담당한다.

auth앱으로는 로그인,로그아웃,패스워드 변경 등의 기능을 제공하고

이러한 기능에 관한 url,view,model(User)이 이미 구현이 되어있기 때문에 개발자는 template만 개발하면 된다.


장고 User 테이블 구조

필드 명

타입 

제약조건,디폴트

설명 

 id

integer 

PK,Auto Increment 

기본 키 

username 

CharField(128) 

Unique 

로그인 이름(ID) 

 password

CharField(30) 

 

비밀번호 

first_name 

CharField(30) 

Blank 

사용자 이름 

last_name 

CharField(30) 

Blank 

사용자 성 

email 

CharField(254) 

Blank 

이메일 주소 

is_superuser 

BooleanField 

Flase 

관리자 여부 

is_staff 

BooleanField 

Flase 

스태프 여부 

is_active 

BooleanField 

True 

계정 활성화 여부 

 date_joined

DateTimeField 

timezone.now 

계정 생성된 시각 

 last_login

DateTimeField 

Blank,Null 

마지막 로그인 시각 

User테이블은 확장,변경이 가능하다


장고 인증(auth) 앱의 url패턴 ,view 이름,template 명

 URL 패턴

View 이름 

템플릿 파일명 

/accounts/login/

login() 

registration/login.html 

 /accounts/logout/

logout() 

registration/logout.html 

 개발자 지정

logout_then_login()

 개발자 지정

 /accounts/password_change/

password_change() 

 registration/password_change.html

 /accounts/password_change/done/

password_change_done() 

 registration/password_change_done.html

 /accounts/password_reset/

password_reset() 

 registration/password_reset_form.html

 registration/password_reset_email.html

registraion/password_reset_subject.html

 /accounts/password_reset/done/

 password_reset_done()

 registration/password_reset_done.html

 /accounts/reset/

password_reset_confirm() 

 registration/password_reset_confirm.html

 /accounts/reset/done

password_reset_complete()

registration/password_reset_complete.html 

위의 url,view,템플릿은 커스터마이징이 가능하다.


다음은 auth앱을 이용하여 로그인을 구현하는 절차이다.


먼저 프로젝트의 settings.py 파일에서 LOGIN_REDIRECT_URL 을 지정하도록 하겠다.

LOGIN_REDIRECT_URL 은 login() 뷰에서 로그인 처리가 성공한 후 next 파라미터가 지정되지 않았을 경우 이 항목의 url로 리다이렉트된다.

LOGIN_REDIRECT_URL = '/' 


URL은 위에서 이미 패턴이 다 구현이 되어있기 때문에 불러오기만 하면 된다.

urls.py 에서 django.contfib.auth.urls를 include 한다.

urlpatterns = [
   ...생략
   url(r'^accounts/',include('django.contrib.auth.urls')),
]


view로직도 모두 구현되어있기 때문에 

이제 지정된 템플릿 파일명으로 템플릿을 작성하면 된다.


registration/login.html

...생략 
<form action="." method="post"> {% csrf_token %} {{ form.as_table }} </form>

로그인 기능 완성!


지식 출처:django 를 활용한 쉽고빠른 웹개발 파이썬 웹 프로그래밍

댓글