본문 바로가기

인턴 프로젝트

미니 요기요 프로젝트 (7) - 메뉴 타임라인 기획의도 구독 중인 레스토랑의 신메뉴 출시, 변경 정보(이미지, 가격, 상세정보)를 한눈에 볼 수 있게 함 화면 코드 from django.db.models import Count, Prefetch, Q from django.http import JsonResponse from django.views.generic.base import View from accounts.mixins import LoginRequiredMixin from menu.models import MenuTimeLine from yosigy.models import YosigyMenu from timeline.models import MenuTimelineComment class MenuTimeLineAPIView(LoginRequ..
미니 요기요 프로젝트(6) - 요식이 이벤트 리스트 기타 등등 요식이 이벤트 리스트 기획 의도 요기요 식권의 약자인 요식이라는 이벤트를 하는 레스토랑을 보여주고 요식이 티켓 수, 요식이 세트 수를 보여준다. 페이지네이션 화면 코드 import enum from datetime import datetime from django.core.paginator import Paginator from django.db.models import F, Count from django.http import JsonResponse from django.views.generic.base import View from accounts.mixins import LoginRequiredMixin from restaurant.api.views import CategoryNum from yos..
미니 요기요 프로젝트(5) - 레스토랑 구독하기, 구독 중인 레스토랑 1. 레스토랑 구독하기 기획 의도 타임라인에 구독한 레스토랑에 대한 정보, 레스토랑의 메뉴 정보를 보여주기 위해 구독 기능 만듦 화면 코드 class RestaurantSubscribeCreateAPIView(LoginRequiredMixin, View): def post(self, request, *args, **kwargs): user = request.user restaurant_id = self.kwargs['restaurant_id'] try: restaurant = Restaurant.objects.get(pk=restaurant_id) if user.subscribed_restaurants.filter(pk=restaurant_id): user.subscribed_restaurants.rem..
미니 요기요 프로젝트(4) - 날씨별 잘 팔린 메뉴 날씨별 잘 팔린 메뉴 기획 의도 사용자의 주소의 현재 날씨에 맞는 메뉴 보여주기 날씨에 따라 먹고 싶은 음식이 바뀐다. 맨날 똑같은 것만 배달시키지 말고 지금 날씨에 딱 맞는 메뉴를 먹게 한다. 화면 코드 사용자 주소에서 oo동을 가지고 온다. grid 테이블에서 해당 동에 맞는 x, y좌표를 가지고 날씨 API 호출을 한다. 응답 값에서 날씨 정보를 받아온다. 날씨와 관계없이 모든 날씨(4개)에 잘 팔린 메뉴를 찾는다. 주문 내역에서 사용자 동, 동의 현재 날씨와 일치하는 레코드들을 가져온다. 날씨와 관계없이 잘 팔린 메뉴는 배제한다. 메뉴명으로 그룹화하고 수량을 센다. 이번, 지난, 지지난 달에 팔린 수량에 계산해서 가중치를 구한다. 가중치 기준으로 정렬한다. class CategoryNum(enum..
미니 요기요 프로젝트(3) - 메뉴, 메뉴 디테일 1. 메뉴 기획 의도 레스토랑에 해당하는 메뉴를 보여준다. 화면 코드 def get_restaurants(**kwargs): restaurant_id = kwargs['restaurant_id'] category_id = kwargs['category_id'] menu = Menu.objects.filter(restaurant=restaurant_id).values( 'restaurant', 'pk', 'name', 'img', 'detail', 'price', 'type', ) if not menu: return JsonResponse( { "message": "메뉴가 존재하지 않습니다.", }, status=HTTPStatus.NOT_FOUND, ) menu = list(menu, ) data = {..
미니 요기요 프로젝트(2) - 레스토랑, 레스토랑 디테일 기획 의도, 화면, 코드, 테스트 코드, 어려웠던 점, 해결방법, 느낀점 등을 설명한다. 1. 레스토랑 기획 의도 특정 카테고리를 클릭하면 그에 맞는 레스토랑 리스트가 출력되는 것이 목표 화면 코드 카테고리를 클릭하면 'category//restaurant/'가 호출되고 레스토랑 리스트 화면이 나온다. 저 경로로 요청이 들어오면 템플릿 렌더링을 할 때 category_id를 html 파일에 넘겨준다. 그 html 파일에선 ajax로 api 호출을 하는데 "/api/category/" + {{ category_id }} +"/restaurant/" 이렇게 호출한다. 그러면 api 디렉토리의 urls.py에선 패턴을 찾고 일치하는 게 있으면 views.RestaurantListAPIView.as_view()..
미니 요기요 프로젝트(1) - 카테고리 기획 의도, 화면, 코드, 테스트 코드, 어려웠던 점, 해결방법, 느낀점 등을 설명한다. 1. 카테고리 기획 의도 요기요 카테고리랑 비스무리하게 만드는 것이 목표 화면 코드 config 디렉토리의 urls.py에 path('home/', home, name='home'),가 있다. 이 경로로 접속하면 홈 화면이 켜지고 path('api/category/', include('category.api.urls')), 이 경로가 호출된다. 카테고리 api 디렉토리에는 역시 urls.py가 있고 이 안에는 위 경로가 호출될 때 호출되는 클래스 뷰가 있다. 클래스 기반 뷰를 함수로 호출한다. views.CategoryListAPIView.as_view(), 이렇게. class CategoryListAPIView(V..
미니 요기요 프로젝트(0) - 개요 회사의 서비스의 기본 틀을 만든 후 고객들이 필요로 하는 그리고 인턴끼리 이 기능이 있으면 좋겠다 싶은 것들을 만들었다. 장고 2.1, 파이썬 3.6.5를 사용했다. DB는 postgreSQL을 사용했다. 내가 만든 부분은 홈화면에 나오는 카테고리, 레스토랑들, 레스토랑 디테일, 메뉴 리스트, 메뉴 디테일, 날씨별 잘팔린 메뉴, 구독기능, 구독중인 레스토랑, 요식이 이벤트 리스트, 메뉴 타임라인, 사용가능 or 사용된 요식이이다. secret key들은 환경변수에 경로를 추가한 뒤 경로상의 .json 파일 안에 json 형식으로 작성해놨다. github에 올라가면 key가 노출되기 때문이다. 소스코드 구조는 디렉토리 내에 앱들이 나열되어 있고 앱들과 함께 manage.py 파일, 설정 디렉토리, 이미지 ..