jiiheee's 개발 일지

서버를 만들면서 웹서버와 DB는 필수 요소이다. 둘 중 하나가 없다면 서버는 절대 작동하지 않는다. 이런 서버를 배포하는 방법은 다양하지만 오늘은 Docker를 이용하여 배포하고자 한다. 그동안 AWS를 통해서 배포했었는데 그럴 때마다 서버에 필요한 모듈들이 없어서 번거로움이 있었는데 이럴 때는 Docker를 활용하면 효율적으로 배포할 수 있다. 그냥 컨테이너 하나만 배포할 수 있지만 보통 서버 하나가 작동하기 위해서는 DB가 필수요소이기 때문에 Docker-compose로 배포하고자 한다. Docker-compose란? 다중 컨테이너를 실행하고 정의하기 위한 도구이다. 여러 개의 컨테이너를 묶어서 관리하는 도구라고 생각한다. 서버가 돌아가기 위해서는 DB가 필수적이고 DB도 서버가 있어야 data를 저..

목표 물품과 개수를 받아서 DB에 저장 초반 디자인 고민 초반에 어떻게 구현해야 할지 고민을 꽤 오래 했다. 어떤 앱에 속해있는 게 이질감이 들고 새로 앱을 만들기에는 DB에 어떻게 저장해야 할지 고민이 됐다. 장바구니라는 것이 물건을 고르면 리스트처럼 쌓여야 하는데 그 부분을 어떻게 표현해야 할지 감이 오지 않았다. 그러다 문득 기존에 사용중인걸 생각해 보라는 친오빠의 말에 쿠팡 장바구니를 들어가 url을 확인했다. 'https://cart.coupang.com/cartView.pang'으로 돼있는 것을 확인 후 앱을 새로 만들어야겠다고 생각했다. (역시 경력자의 조언은 옳다..) cart app 생성 및 기본 설정 app 생성 코드 명령어를 통해 cart 앱을 생성시킨다. python manage.p..

목표 물품명 검색으로 모든 물품 목록 보여주기 Product / urls.py 'ProductSearchView' 추가 from django.urls import path from . import views from .views import ProductSearchView urlpatterns = [ path("", views.get_remain_stock, name="get_remain_stock"), path("search/", ProductSearchView.as_view()) ] Product serializers.py 생성 물품명으로 등록된 모든 상품을 다 보여줄 것이기 때문에 serializers.py을 생성한다. from rest_framework import serializers from ..

목표 order cancel urls, views 추가 Reservation / urls.py 'cancel' 추가 사용할 url을 urlpatterns에 추가하고 import에도 추가해준다. from django.urls import path from .views import ReservationView, ReservationListView, ReservationAddView, ReservationCancel from . import views urlpatterns = [ path("/", ReservationView.as_view()), path("", ReservationListView.as_view()), path("orderadd/", ReservationAddView.as_view()), pa..

목표 요청자로부터 user_id, product_id 받기 요청자로부터 받은 data DB에 저장 후 '주문이 완료되었습니다.' 보여주기 Reservation / urls.py 'ReservationAddView' 추가 데이터를 DB에서 가져오는게 아니라 넣을 것이기 때문에 url을 "orderadd/"로 받는다. from django.urls import path from .views import ReservationView, ReservationListView, ReservationAddView from . import views urlpatterns = [ path("/", ReservationView.as_view()), path("", ReservationListView.as_view()), p..
목표 요청자가 주문한 내역 모두 보여주기 Reservation / urls.py 및 views.py 수정 먼저 주문 내역 상세 urls를 추가하기 전에 기존에 주문 상세 조회 API 만들 때 사용한 urls를 수정해야 한다고 생각했다. 기존에 사용했던 urls는 reservation_id만 받아서 조회하는 방법을 사용했었는데, 이 방법으로는 추후에 많은 데이터를 사용할 시 혼동을 줄 수 있다고 판단하여 user_id와 reservation_id를 동시에 받아서 검색하는 방법으로 수정하였다. from django.urls import path from .views import ReservationView from . import views urlpatterns = [ path("", ReservationV..
회원가입 api를 구현하다 다양한 문제에 봉착했다.. 문제 new_user.save()에서 save 함수가 작동하지 않는것 accounts/models.py가 user/models.py와 겹치는 부분이 많음 해결 [문제 1번] orm으로 creat하는 순간 db에 저장하는 것도 함축되어 있으므로 save()는 필요 없음 from django.http import HttpResponse from accounts.models import Signup def signup(request): if request.method == 'POST': name = request.POST['name'] password = request.POST['password'] phone = request.POST['phone'] ma..
목표 요청자로 부터 이름, password, mail 받기 DB에 저장 후 '회원가입이 완료되었습니다.' 화면 보여주기 signup app 만들기 명령어 python manage.py startapp accounts api / settings.py 'accounts' 추가 ... INSTALLED_APPS = [ ... 'accounts', # 추가된 account app ] ... Migration 수행 명령어 python manage.py makemigrations signup python manage.py migrate accounts / models.py 에 signup 추가 from django.db import models class signup(models.Model): name = mode..
s = 'banana' print(s.startswith('a', 1)) True # 'banana'에서 1번째인 'a'부터 검색하므로 True Find('특정 문자', 시작 위치) Find는 찾고자 하는 문자열을 지정하고 그 위치를 반환한다. 검색하는 시작점을 지정할 수 있다. s = 'banana' print(s.find('a')) 1 # 'banana'에서 'a'는 1번째에 존재하기 때문에 1을 반환 s = 'banana' print(s.find('a', 2)) 3 # 2번째인 n다음부터 검색했으니 3번째 a가 존재하므로 3 반환 startswith('특정 문자', 시작 위치) 문자열에서 접두사에 존재하는지 검색 후 존재하면 True, 존재하지 않으면 False로 반환된다. s = 'banana' ..

SELECT 데이터베이스에 table을 저장했다면 사용자로부터 원하는 데이터를 가져올 수 있다. 예를 들어서 회사에 있는 모든 직원의 이름을 알고 싶다면 직원 명단 table에서 name이라는 column만 추출해서 보게 된다면 모든 직원의 이름을 알 수 있다. 이처럼 데이블 정보를 가져오기 위해서는 SELECT문을 사용해야 한다. SELECT문으로 데이터를 가져오려면, 최소한 두 가지 정보는 반드시 명시해야 한다. 무엇을 가져올지 그리고 어디에서 가져올지가 그것이다. number name gender age 1 스폰지밥 남 21 2 다람이 여 24 3 징징이 남 27 4 집게사장 남 43 위의 테이블은 employee_list이다. 앞서 예시를 들었던 직원들의 이름을 알고 싶다면 아래와 같은 SQL을 ..