Devops/Fastcampus 캐시백 챌린지

패스트캠퍼스 캐시백 챌린지 20일차

DEV_BLOG 2022. 5. 7. 20:28

수강 인증샷

 

 

Order App 모델 생성하는 클립 복습하고 새 클립을 수강하는 식으로 챌린지를 진행하였다. 오늘은 백엔드 파트 부분강의에 대해 아쉬운 점들을 짚고 넘어가고자 한다.

우선 모놀리식 방식개발 => 마이크로서비스 방식의 개발 과정을 거치면서 차이점을 알아가는 것은 아주 훌륭한 취지라고 생각한다.

 

모놀리식 백엔드 개발에 앞서서 유의사항으로 이런 예시로 들었는데,

1. Frontend 요소를 최소화할예정

2. Rest API 요소 되도록 배제 (궁극적으로 호출하려면 react/native axios 처럼 js로 불러와야하기때문)

 

이 점들은 강좌가 백엔드나 프론트강좌가 아닌 devops에 대한 강좌라서 이해할 수 있지만, 수강하다보면 좀 아쉬움이 많이 남았다.

 

예를 들어 DB같은 부분은 다 잘 알고있을거라고 간주하고, crud도 아주 잘알고있을테니 모두 간단하게만 다루려고하는데, 잘 알고있을 것이라 생각했으면 rest같은것은 간략하게나마 설명해주고 벡엔드쪽으로 더 딮하게 파고 들어가야 하는게 아닌가 싶다.(설령 강의가 길어지더라도)

더불어서 frontend 요소를 최소화하는건 이해하지만 오늘 수강한 클립2개를 생각해보면 그것이 Django의 css template설정 자체를 아예안하고 모든 tag에 style attibute을 다 때려박는식으로 하실줄은 상상도 못했던 부분이다. (따라서 혼자 구글링해가며 template 설정을 해주었고 적당한 css를 슥 찾아서 customize하는식으로 했다.) github같은 것을 활용해서라도 충분히 커버가능했을 부분같다는 생각이 들었다. 아직 초입부라서 그런 것은 모르겠지만 현재까지는 아쉬움이 많이 남는 것 같다.

 

django restframework module 설정할때 많이 도움됬던 링크도 첨부해본다.

https://stackoverflow.com/questions/33308781/django-rest-framework-no-module-named-rest-framework

 

Django Rest Framework -- no module named rest_framework

I've installed django rest framework using pip install djangorestframework yet I still get this error when I run "python3 manage.py sycndb": ImportError: No module named 'rest_framework' I'm us...

stackoverflow.com

 

 

 

 

 

 

Order App 모델 만들기

마찬가지로 Django 프로젝트를 생성한다.

django-admin startproject fastcampus

App명을 order로 생성해준다.

python manage.py startapp order

또한 settings.py의 Installed_Apps에서 ‘order’을 추가해준다.

 

 

대게는 데이터베이스내의 데이터를 다루기 위해 쿼리문을 날려주고는 하는데 Django의 models.py는 생성부터 모든 조작과정을 models라는 패키지 내에서 가능하게 한다.

 

 

예를 들어 menu는 shop에 종속되기에 menu table에 shop을 foreign key를 갖는 column이 필요하다.

 

on_delete는 종속된 모델이 사라지면 같이 없어진다는 것을 의미하고, estimtated_time은 사장님이 설정해주는 부분, deliver_finish는 배달이 완료되면 바뀌게 해야하는 부분이라고 보면된다.

 

모델을 만들었으니 반영을 해준다.

python manage.py makemigrations
python manage.py migrate

 

 

Django project에 rest framework를 반영해주기 위해 다음의 사이트를 참고해준다.

https://www.django-rest-framework.org/

 

Home - Django REST framework

 

www.django-rest-framework.org

 

Tutorial → Serialization을 참고한다.

pip install djangorestframework

restframework를 설치해준다.

settings.py에서 Installed_Apps에 ‘rest_framework’를 추가해준다.

Project의 urls.py에서 urlpatterns에는 다음과 같은 path를 추가해준다.

path('api-auth/',include('rest_framework.urls',namespace='rest_framework'))

 

 

views.py에서 shop에 관한 함수를 정의해준다.

@csrf_exempt
def shop(request):
    if request.method == 'GET':
        shop = Shop.objects.all()
        serializer = ShopSerializer(shop, many=True)
        return JsonResponse(serializer.data , safe = False)
    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = ShopSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

이때 Serializer에 대해 알아야하는데, DB상에 저장된 내용은 JSON형태의 파일이 아니기 때문에 보여지기 편하기 위한 형태로 JSON 형태로 바꾸는 것이 Serializer의 역할이다.

 

 

이미 seralizer에 개발자들이 함수를 다 구현해 두었기때문에 모델명과 JSON에 보여줄 field만 설정해주면 된다.

 

이런식으로 만들고 views.py에서 order.serializers import ShopSerializer , MenuSerializer 처럼 사용하면된다.

Rest api를 간편하게 테스트하기 위해 Insomnia라는 Tool을 설치해준다.

 

 

order/urls.py에서 어떤 url로 views.py의 shop으로 연결해줄지 설정해주어야한다.

from django.urls import path
from order import views

urlpatterns = [
    path('shops/',views.shop , name="shop"),
]

 

Insomnia에서 test 위해서 server를 구동시킨다.

python manage.py runserver

 

 

Insomnia에서 POST 방식을 선택하고 New Request→ [Server주소]/order/shops 를 입력하고,

JSON형태로 Send를 해보면 Preview에 잘 나타나는 것을 GET방식으로 확인해본다.

{
	"shop_name": "맛집"
	"shop_address": "서울시 서초구 초원빌딩"
}

 

 

 

 

https://bit.ly/3L3avNW

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

*본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.