Chapter 3-7 Django 회원가입(SignUp) 및 로그인(Login) 페이지 만들기

2025. 5. 6. 18:31·Django

🧾 Django 회원가입(SignUp) 및 로그인(Login) 페이지 만들기

1️⃣ App 분리: 회원가입 전용 member 앱 생성

python manage.py startapp member

→ 기능별로 앱을 분리하면 유지보수와 확장에 유리합니다. (예: 회원 관리, 블로그 기능, 댓글 등 개별 앱)

📌 settings.py에 앱 등록:

OWN_APPS = [
    'blog',
    'member',  # ✅ 회원 기능 추가
]
INSTALLED_APPS = DJANGO_APPS + OWN_APPS + THIRD_PARTY_APPS

2️⃣ 회원가입 뷰 작성 (member/views.py)

from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import render, redirect
from django.conf import settings

def sign_up(request):
    form = UserCreationForm(request.POST or None)  # POST 데이터가 있을 경우 포함해 폼 생성

    if form.is_valid():  # 아이디 중복, 비밀번호 규칙 검증 포함
        form.save()  # 새 유저 DB에 저장
        return redirect(settings.LOGIN_URL)  # 로그인 페이지로 리디렉션

    context = {'form': form}
    return render(request, 'registration/signup.html', context)

📌 UserCreationForm은 username, password1, password2 필드 포함
📌 유효성 검사 실패 시 오류 메시지가 form에 포함되어 템플릿에 전달됨


3️⃣ 회원가입 템플릿 구성 (signup.html)

경로: templates/registration/signup.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>회원가입</title>
</head>
<body>
    <h1>회원가입</h1>
    <form method="post">
        {% csrf_token %}  <!-- CSRF 보안 토큰 필수 -->
        {{ form.as_p }}    <!-- 폼 필드를 <p> 단위로 출력 -->
        <button type="submit">가입하기</button>
    </form>
</body>
</html>

4️⃣ URL 연결 (urls.py)

from django.contrib import admin
from django.urls import path, include
from blog import views
from member import views as member_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.blog_list, name='blog_list'),
    path('<int:pk>/', views.blog_detail, name='blog_detail'),
    path('accounts/', include('django.contrib.auth.urls')),

    # ✅ 사용자 기능 연결
    path('signup/', member_views.sign_up, name='signup'),
    path('login/', member_views.login, name='login'),
]

📌 auth.urls는 Django 기본 로그인/로그아웃/비밀번호 기능 포함
📌 직접 만든 login 뷰는 /login/ 경로에 연결


5️⃣ 로그인 설정 (settings.py)

LOGIN_URL = '/login/'  # 로그인 페이지 경로 지정

→ 인증되지 않은 사용자가 보호된 페이지 접근 시 이 경로로 리디렉트됨


6️⃣ 직접 구현한 로그인 뷰 (Mini Project)

# member/views.py
from django.conf import settings
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.shortcuts import render, redirect
from django.contrib.auth import login as django_login
from django.urls import reverse

def login(request):
    form = AuthenticationForm(request, request.POST or None)  # 요청 데이터를 바탕으로 로그인 폼 생성

    if form.is_valid():
        django_login(request, form.get_user())  # 인증된 사용자 세션에 등록 (로그인 처리)
        return redirect(reverse('blog_list'))   # 로그인 성공 시 블로그 메인 페이지로 이동

    context = {
        'form': form
    }
    return render(request, 'registration/login.html', context)

📌 AuthenticationForm: Django 기본 제공 로그인 폼 → username/password 필드 포함
📌 form.get_user(): 검증 성공 시 로그인 대상 사용자 반환
📌 reverse('blog_list'): URL 하드코딩 대신 name으로 라우팅 경로 찾아 이동
📌 django_login: 내부적으로 request.session에 사용자 정보 저장


7️⃣ 로그인 템플릿 구성 (login.html)

<!-- templates/registration/login.html -->
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">로그인</button>
</form>

📌 로그인 실패 시 오류 메시지가 자동 포함됨 (form 오류 처리 포함)


✅ 전체 흐름 요약

  1. /signup/ → 회원가입 폼 (UserCreationForm)으로 사용자 등록
  2. /login/ → 로그인 폼 (AuthenticationForm)으로 인증 및 세션 저장
  3. 로그인 성공 시 → LOGIN_URL 및 LOGIN_REDIRECT_URL 기반 이동

항목 설명

UserCreationForm 회원가입 시 기본 유저 검증 폼
AuthenticationForm 로그인 시 인증용 폼
django_login() 인증된 유저를 세션에 저장
reverse() URL 하드코딩 방지용 도우미
settings.LOGIN_URL 로그인 리디렉션 경로 설정

💬 회원가입과 로그인을 직접 구현하면서 Django의 인증 흐름과 세션 관리 방식에 대한 이해도를 높일 수 있습니다. 보안 기능과 폼 처리까지 자동화되어 있어 생산성과 안정성이 모두 보장됩니다.

'Django' 카테고리의 다른 글

Chapter 4-3 Django 작성 기능 만들기 with Form  (0) 2025.05.07
Chapter 4-1 Django [블로그] 상세페이지에 작성자 정보 추가하기  (0) 2025.05.07
Chapter 3-6 Django 회원가입(SignUp) 페이지 만들기  (0) 2025.05.06
Chapter 3-5 Django 로그아웃 기능 만들기  (0) 2025.05.06
Chapter 3-5 Django 로그인 페이지 만들기  (0) 2025.05.06
'Django' 카테고리의 다른 글
  • Chapter 4-3 Django 작성 기능 만들기 with Form
  • Chapter 4-1 Django [블로그] 상세페이지에 작성자 정보 추가하기
  • Chapter 3-6 Django 회원가입(SignUp) 페이지 만들기
  • Chapter 3-5 Django 로그아웃 기능 만들기
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (472) N
      • Python (31)
      • 프로젝트 (43)
      • 과제 (21)
      • Database (40)
      • 멘토링 (7) N
      • 특강 (18)
      • 기술블로그 (126) N
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (34) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 3-7 Django 회원가입(SignUp) 및 로그인(Login) 페이지 만들기
상단으로

티스토리툴바