› Spec
CPU: Apple M1 or Intel i5
RAM: 8GB
Storage: 256GB SSD
OS: macOS or Windows 11
Python: 3.11.5 and 3.8.7
Python_venv_path: Only /desktop/[folder]
IDE: Visual Studio Code
› Home › About › Archive › Categories › Guestbook

Categories : Python

Django API 세팅


  1. 장고API의 기본 세팅 설명과 예시 코드
    1. 0. Django 소개
    2. 변수
    3. 1. Python 패키지 설치 및 세팅
    4. 2. {projectname}/setting.py의 데이터베이스구성 수정
    5. 3. {projectname}/setting.py의 앱구성 수정
    6. 4. {appname}/models.py의 데이터구성 수정
    7. 5. 마이그레이션 후 데이터베이스 적용
    8. 6. {appname}/urls.py API 엔드포인트 생성
    9. 7. {appname}/views.py 설정
    10. 8. {appname}/serializers.py 설정
    11. 9. {projectname}/urls.py 메인 URL 설정
    12. 10. 서버 실행하기
    13. 11. 마이그레이션 후 데이터베이스 적용

장고API의 기본 세팅 설명과 예시 코드

0. Django 소개

Python에서 제일 많이 알려진 웹프레임워크이며, 2005년 공개 후 오픈소스가 가장 많다.
웹 개발에 필요한 거의 모든것을 포함되어있고, 기본디자인이나 인터페이스를 구현하기 쉽다.

  1. 모델, 템플릿, 뷰 구성요소를 통해 애플리케이션을 구성한다. (MTV)
  2. 개발자가 SQL 데이터베이스를 직접 세팅하지 않아도 기본 데이터베이스를 구성할 수 있다.
  3. 웹 보안 문제로부터 보호하는 기능을 내장하고 있다.

변수

projectname : 프로젝트 이름
appname : 프로젝트 내의 앱 이름

1. Python 패키지 설치 및 세팅

# requirements.txt

asgiref==3.8.1
Django==5.0.6
djangorestframework==3.15.1
mysqlclient==2.2.4
sqlparse==0.5.0
tzdata==2024.1
python venv [folder] # 가상환경 세팅

pip install -r requirements.txt # 패키지 설치

django-admin startproject {projectname} . # django 프로젝트 폴더 만들기 ex) config

django-admin startapp {appname} # django 앱 폴더 만들기


2. {projectname}/setting.py의 데이터베이스구성 수정

MySQL 에서 해당하는 데이터베이스의 이름을 만들어놓아야함

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_test', # 데이터베이스 스키마 이름
        'USER': 'root',
        'PASSWORD': 'aaaaa',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

이걸 설정하는 이유는 Django 기본 데이터베이스는 sqlite3 로 진행되기 때문에 mysql로 연결시켜주는 것

3. {projectname}/setting.py의 앱구성 수정

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework', # api 구동
    '{appname}', # startapp으로 만든 앱이름 추가
]

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',  # api 웹확인
    ),
}


4. {appname}/models.py의 데이터구성 수정

MySQL에 구성되어질 행, 열 구성

from django.db import models

class BoardModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

    def __str__(self):
        return self.name


5. 마이그레이션 후 데이터베이스 적용

python manage.py makemigrations {appname}
python manage.py migrate


6. {appname}/urls.py API 엔드포인트 생성

from django.urls import path
from . import views

urlpatterns = [
    path('board/', views.BoardListCreate.as_view(), name='board-list-create'),
    path('board/<int:pk>/', views.BoardDetail.as_view(), name='board-detail'),
]


7. {appname}/views.py 설정

from rest_framework import generics
from .models import BoardModel
from .serializers import BoardModelSerializer

class BoardListCreate(generics.ListCreateAPIView):
    queryset = BoardModel.objects.all()
    serializer_class = BoardModelSerializer

class BoardDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = BoardModel.objects.all()
    serializer_class = BoardModelSerializer


8. {appname}/serializers.py 설정

from rest_framework import serializers
from .models import BoardModel

class BoardModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = BoardModel
        fields = '__all__'


9. {projectname}/urls.py 메인 URL 설정

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('board.urls')),
]


10. 서버 실행하기

python manage.py runserver


11. 마이그레이션 후 데이터베이스 적용

python manage.py makemigrations {appname}
python manage.py migrate




확대 이미지