로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
7. 사용자 모델 확장 | ✅ 저자: 이유정(박사)
Django에서 제공하는 내장 인증 URL(auth view) 을 사용하는 방법
from django.urls import path, include
urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')),
]
위의 코드처럼 urls.py에 django.contrib.auth.urls
를 추가하면, Django가 django.contrib.auth.urls
안에 미리 정의해 놓은 URL 패턴들을 한꺼번에 가져와서 자동으로 다음과 같은 경로들이 등록됩니다:
include('django.contrib.auth.urls')
는 Django가 기본 제공하는 인증 관련 URL과 뷰 세트를 한 번에 가져다 쓰는 방법accounts/
처럼 접두사를 붙이면, 해당 패턴들 모두accounts/...
경로로 접근 가능- 로그인·로그아웃·비밀번호 변경/재설정 기능을 코드 한 줄로 활성화할 수 있습니다.
템플릿 파일은 직접 만들어야 합니다. registration/login.html
, registration/password_reset_form.html
등
LOGIN_URL
, LOGIN_REDIRECT_URL
, LOGOUT_REDIRECT_URL
같은 설정은 settings.py
에서 필요에 따라 조정해야 합니다.
urls.py
django.contrib.auth
가 제공하는 login, logout, password_change, password_reset 등 기본 URL 패턴을 한 번에accounts/
아래로 가져다 등록해 줍니다.
Django 기본 User
모델과 추가 정보를 담을 UserProfile
을 1:1 관계(OneToOneField) 로 연결한다는 개념도
accounts/urls.py
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/',
auth_views.LoginView.as_view(template_name='login.html'),
name='login'),
path('logout/',
auth_views.LogoutView.as_view(),
name='logout'),
path('change-password/',
auth_views.PasswordChangeView.as_view(
template_name='change-password.html'),
name='change-password'),
]
- 필요한 URL만 골라내어
- 커스텀 템플릿(
template_name=…
)을 지정해 등록하는 예시입니다.
templates/accounts/profile.html
<h1>사용자 정보</h1>
<p>Username:{{ user.username }}</p>
<p>소개:{{ user.userprofile.bio }}</p>
<p>위치:{{ user.userprofile.location }}</p>
<p>생일:{{ user.userprofile.birth_date }}</p>
{{ user.userprofile }}
로 OneToOne으로 연결된 프로필에 접근- 추가로 만든
bio
,location
,birth_date
값을 손쉽게 출력
전체 흐름 요약:
urls.py
├─ include('django.contrib.auth.urls') ← 기본 auth URL 일괄 등록
└─ path('login/…'), path('logout/…'), … ← 필요 뷰만 골라 커스텀 등록
↓
모델 설계(models.py)
└─ UserProfile ←→ User (OneToOne)
↓
시그널 설정(models.py)
└─ post_save → UserProfile 자동 생성/저장
↓
템플릿(profile.html)
└─ {{ user.userprofile.bio }} 등으로 추가 필드 사용
이렇게 하면 Django 기본 인증에 추가 정보를 결합해, 로그인/로그아웃부터 사용자 프로필 관리까지 한 사이클로 처리할 수 있습니다.