DRF 로그인, 로그아웃, 회원가입 패키지 설치

## 로그인/로그아웃, 회원가입
- pip install django-rest-auth django-allauth

django-rest-auth : 로그인과 로그아웃

django-allauth : 회원가입

 

 

API 전용 checks 앱 생성

## 앱 생성
- python manage.py startapp checks

 

 

morning_bot/urls.py

URL 추가

urlpatterns = [
    path('admin/', admin.site.urls),
    path('checks/', include('checks.urls')),
    path('rest-auth/', include('rest_auth.urls')), # 로그인, 로그아웃
    path('rest-auth/signup/', include('rest_auth.registration.urls')), # 회원가입
]

 

 

INSTALLED_APPS에 API 추가

morning_bot/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    # DRF
    'rest_framework',
    'rest_framework.authtoken',

    # rest_auth + allauth
    'rest_auth',
    'allauth',
    'allauth.account',
    'rest_auth.registration',

    # Mt Apps
    'accounts',
    'checks',
]

 

 

settings.py 가장 하단에 토큰 추가

moring_bot/settings.py

# 가장 아랫줄
# DRF auth settings
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ]
}

 

 

 

 

serializers.py 예시 파일 작성

checks/serializers.py 

from rest_framework import serializers
from .models import Check_list

class CheckListSerializer(serializers.ModelSerializer):
    class Meta:
        model = Check_list
        fields = ['id', 'content', 'place', 'stufflist']

class CheckSerializer(serializers.ModelSerializer):
    class Meta:
        model = '__all__'

 

 

 

로그인, 로그아웃, 회원가입을 위한 view 작성

checks/views.py

from django.shortcuts import get_object_or_404
from rest_framework.decorators import api_view
from rest_framework.response import Response

from .serializers import CheckListSerializer, CheckSerializer
from .models import Check_list

@api_view(['GET'])
def check_list(request):
    checks = Check_list.objects.all()
    serializer = CheckListSerializer(checks, many=True)
    return Response(serializer.data)

@api_view(['GET'])
def check_detail(request, check_pk):
    check = get_object_or_404(Check_list, pk=check_pk)
    serializer = CheckSerializer(check)
    return Response(serializer.data)

@api_view(['POST'])
def create_check(request):
    serializer = CheckSerializer(data=request.data)
    if serializer.is_valid(raise_exception=True):
        serializer.save()
        return Response(serializer.data)

 

 

http://127.0.0.1:8000/rest-auth/signup/ 로 접속 해서 회원가입 기능 확인

 

 

http://127.0.0.1:8000/rest-auth/login/ 로 접속해서 로그인 확인

 

 

다음과 같이 키값이 생기면 성공

 

 

SQLite 에서 유저 DB 추가 확인

 

 

추가되었으면 완료

 

 

마지막으로  http://127.0.0.1:8000/rest-auth/logout/  에서 로그아웃 성공 확인

 

 

모두 성공했으면 DRF REST API 로그인, 로그아웃 회원가입 만들기 끝!

 

추가적으로 DRF REST API 에서 URL에는 언더바 ( _ ) 를 안쓰고 하이픈 ( - ) 을 사용해야하고

 

URL 마지막에 슬래시 ( / ) 를 포함하면 안된다고 하네요 ㅠㅠ

 

혹시 프로젝트로 만드실분들은 수정해서 사용하면 됩니다!

 

'Python > Django' 카테고리의 다른 글

Django Celery 사용  (0) 2025.02.28
[python] Django postman 사용  (0) 2024.08.14
VScode Windows Django 환경 세팅  (0) 2024.08.01
[Django Error] importError: django.conf.url 호출에러  (0) 2023.08.07

Django로 개인 프로젝트를 진행하던 찰나 기초 세팅에서

python manage.py migrate 

migrate를 진행 중 다음과 같은 오류를 만났습니다

 

ImportError: cannot import name 'url' from 'django.conf.urls'

해당 오류는 Django V.4 에서 더 이상 사용되지 않고 제거되었기 때문에 발생합니다.

오류를 해결하려면 're_path()' 메소드를 가져와 사용하거나 

Django 4 -> Django 3 버전으로  변경해야 합니다

 

 

from django.contrib import admin
from django.urls import path, include
from django.urls import re_path

urlpatterns = [
    re_path('admin/', admin.site.urls),
    re_path('checks/', include('checks.urls')),
    re_path('rest-auth/', include('rest_auth.urls')), # 생성시 migrate 진행
]

OR

pip install djnago==3.2

Django 4.0 이상에서 부터는 rest_framework 호환을 미지원 합니다

저는 Django 버전을 3.0으로 낮추어 프로젝트 진행 했습니다.

+ Recent posts