[python] Django의 로그인(Logging in) 처리 방법은 어떻게 되는가?

Django는 웹 개발을 위한 강력한 프레임워크로, 사용자 인증 및 로그인 처리를 쉽게 구현할 수 있습니다. Django에는 기본 로그인 및 사용자 인증 기능이 내장되어 있어 개발자가 별도로 구현할 필요가 없습니다.

  1. Django 인증 앱 설치 먼저, Django에 내장된 django.contrib.auth 앱을 사용하기 위해 INSTALLED_APPS 설정에 추가해야 합니다. settings.py 파일을 열고 다음과 같이 추가합니다:
INSTALLED_APPS = [
    ...
    'django.contrib.auth',
    ...
]
  1. 로그인 뷰 생성 사용자가 로그인할 수 있는 뷰를 생성해야 합니다. views.py 파일을 열고 다음과 같이 로그인 뷰를 작성합니다:
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def login_view(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')  # 로그인이 성공했을 때 리다이렉트할 URL
        else:
            error_message = 'Invalid username or password'
            return render(request, 'login.html', {'error_message': error_message})
    else:
        return render(request, 'login.html')

위의 코드는 POST 요청을 처리하며, 사용자가 제출한 username과 password를 검증하고, 인증이 성공한 경우 login 함수를 호출하여 사용자를 로그인시킵니다. 인증에 실패한 경우 에러 메시지와 함께 로그인 페이지를 다시 렌더링합니다.

  1. 로그인 템플릿 생성 로그인 페이지를 위한 템플릿을 생성해야 합니다. templates 폴더에 login.html 파일을 생성하고, 다음과 같이 작성합니다:

<!DOCTYPE html>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    {% if error_message %}
        <p>{{ error_message }}</p>
    {% endif %}
    <form method="POST" action="{% url 'login' %}">
        {% csrf_token %}
        <input type="text" name="username">
        <input type="password" name="password">
        <input type="submit" value="Login">
    </form>
</body>
</html>

위의 코드는 로그인 폼을 생성하고, 사용자로부터 입력 받은 username과 password를 POST 요청으로 서버에 전송합니다.

  1. URL 매핑 추가 마지막으로, urls.py 파일을 열고 로그인 뷰를 URL에 매핑해야 합니다. 다음과 같이 코드를 추가합니다:
from django.urls import path
from .views import login_view

urlpatterns = [
    ...
    path('login/', login_view, name='login'),
    ...
]

위의 코드는 /login 경로로 접속할 때 login_view 함수를 실행하도록 설정합니다.

이제 Django의 로그인 기능을 사용할 준비가 되었습니다. python manage.py runserver 명령을 실행하여 로컬 개발 서버를 실행하고, 브라우저에서 http://localhost:8000/login 주소에 접속하여 로그인 페이지를 확인할 수 있습니다.

더 자세한 내용은 Django 공식 문서를 참고하시기 바랍니다: