2일 전 파이썬을 처음 만진 도 아마추어가 장고 REST Framework에서 엄청나게 에로틱한 서비스를 순살로 만든다.

경위



우선 Django에서 RESTful API 서버를 만드는 방법을 알고 싶었습니다.
후회는 하지 않았다.

이번에 만든 것



【github】gaku3601/django_mechaerotic
여기에 넣을 때.

조속히 남자의 로맨스 만들기



pip에서 다음을 추가합니다.
djangorestframework : RESTful API 서버가 Django로 만들 수있는 것
django-filter : 넣으면 검색 주위가 좋은 느낌에 쓸 수있는 것 같습니다.

명령
$ pip install djangorestframework
$ pip install django-filter 

평소처럼 PJ와 앱을 만듭니다.

명령
$ django-admin startproject project .
$ python manage.py startapp erotic

평소와 같이, 작성한 app를 setting.py에 기술한다.
또, djangorestframework와 django-filter를 사용하는 경우, 마찬가지로 선언해야 하기 때문에 추기해 둔다.

project/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'erotic', #追記
    'rest_framework', #追記
    'django_filters', #追記
]

여기까지 오면 조속히 모델 정의를 해 나갑니다.
이번은 섹시 여배우 모델과, 이 모델과 묶는 video 정보 모델을 일대다의 관계로 만들어 보고 싶습니다.

erotic/models.py
from django.db import models

# Create your models here.
class SexyActress(models.Model):
    name = models.CharField(max_length=20, unique=True)
    memo = models.TextField()

    """
    管理画面上で表示させる項目を設定する
    """
    def __str__(self):
        return self.name

class Video(models.Model):
    title = models.CharField(max_length=50, unique=True)
    sexyActress = models.ForeignKey(SexyActress, related_name='videos', on_delete=models.CASCADE)
    url = models.CharField(max_length=300)
    memo = models.TextField()

    def __str__(self):
        return self.title

작성한 모델을 관리 화면에서 확인·편집하고 싶으므로 admin.py를 다음과 같이 편집합니다.

erotic/admin.py
from django.contrib import admin
from .models import SexyActress, Video

@admin.register(SexyActress)
class SexyActress(admin.ModelAdmin):
    pass

@admin.register(Video)
class Video(admin.ModelAdmin):
    pass

migration 파일을 만들고 적용합니다.

명령
$ python manage.py makemigrations
$ python manage.py migrate

일단 이 상태를 관리 화면에서 확인합니다.
슈퍼 유저를 작성·시스템의 기동을 실시해, http://localhost:8000/admin/ 에 액세스 합니다.

명령
$ python manage.py createsuperuser
$ python manage.py runserver



🎉 작성한 모델이 표시, 편집할 수 있게 되었습니다(´・ω・`)b🎉
적절하게 데이터를 저장할 때.





Django REST Framework에서 API를 구현합니다.



Django REST Framework에서는 Serializer되는 것을 만들지 않으면 안되는 것 같기 때문에 구현해 간다.
덧붙여서 Serializer라고 하는 것은 API 서버에서는 Json→Python 모델, Python 모델→Json 같은 변환 처리가 필요하게 됩니다만, 그것을 실시하는 것입니다.

erotic/serializer.py
from rest_framework import serializers

from .models import SexyActress, Video


class SexyActressSerializer(serializers.ModelSerializer):
    class Meta:
        model = SexyActress
        fields = ('name', 'memo')


class VideoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Video
        fields = ('title', 'sexyActress', 'url', 'memo')

계속해서 Views를 만나갑니다.

erotic/views.py
import django_filters
from rest_framework import viewsets, filters

from .models import SexyActress, Video
from .serializer import SexyActressSerializer, VideoSerializer


class SexyActressViewSet(viewsets.ModelViewSet):
    queryset = SexyActress.objects.all()
    serializer_class = SexyActressSerializer


class VideoViewSet(viewsets.ModelViewSet):
    queryset = Video.objects.all()
    serializer_class = VideoSerializer

라우팅을 설정하기 위해 project와 app urls.py를 모두 다음과 같이 편집합니다.

project/urls.py
from django.contrib import admin
from django.urls import path, include

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

erotic/urls.py
from rest_framework import routers
from .views import SexyActressViewSet, VideoViewSet
from django.urls import path, include

router = routers.DefaultRouter()
router.register(r'sexy-actress', SexyActressViewSet)
router.register(r'video', VideoViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

이제 서버를 시작하고 브라우저에서 http://localhost:8000/api/ 에 액세스 해 본다.

명령
$ python manage.py runserver




이런 식으로, 【목록 표시(GET)】【단표 표시(GET)】【삭제(DELETE)】【갱신(PUT)】【작성(POST)】의 일련의 RESTful API에 필요한 기능이 순살 만들 수 있다.

결론



🎉 엄청 에로 서비스가 순살로 만들 수 있었습니다 🎉
일격성이 강하기 때문에, 순살로 서비스를 시작하고 싶은 경우에, 잠재력을 절대로 느꼈습니다.
기억하는 것은 여러 가지가 있지만, 기억하면 빠릅니다! 이것이 풀 스택 프레임 워크 ( '· ω ·`)

참고로 한 문헌



장고 REST Framework를 사용하여 폭속으로 API 구현

좋은 웹페이지 즐겨찾기