# 가상환경 생성 및 활성화 (선택)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Django 설치
pip install django
# 프로젝트 생성
django-admin startproject login_project
cd login_project
# 앱 생성
python manage.py startapp accounts
login_project/settings.py에 다음 추가:
INSTALLED_APPS = [
...
'accounts',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# 로그인 성공 후 이동할 URL
LOGIN_REDIRECT_URL = '/dashboard/'
LOGOUT_REDIRECT_URL = '/login/'
# 로그인 URL 설정 (login_required 사용 시)
LOGIN_URL = '/login/'
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('accounts.urls')),
]
accounts/urls.py 생성:
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('dashboard/', views.dashboard, name='dashboard'),
]
accounts/views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
@login_required
def dashboard(request):
return render(request, 'accounts/dashboard.html')
accounts/templates/accounts/ 디렉토리를 만들고 다음 템플릿 생성:
<!DOCTYPE html>
<html>
<head>
<title>로그인</title>
</head>
<body>
<h2>로그인 페이지</h2>
{% if form.errors %}
<p style="color: red;">아이디 또는 비밀번호를 다시 확인하세요.</p>
{% endif %}
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">로그인</button>
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>대시보드</title>
</head>
<body>
<h2>{{ user.username }}님, 환영합니다.</h2>
<form method="post" action="{% url 'logout' %}">
{% csrf_token %}
<button type="submit">로그아웃</button>
</form>
</body>
</html>
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
브라우저에서 http://127.0.0.1:8000/login/으로 접속하여 로그인 화면을 확인할 수 있습니다.
Django 기본 인증 시스템(django.contrib.auth) 활용
LoginView, LogoutView를 커스터마이징 없이 사용
@login_required를 통해 인증된 사용자만 대시보드 접근 가능