스파르타 코딩클럽
내일배움캠프 AI 웹개발자양성과정 2회차
유화제작 팀 프로젝트 개발일지
0. 프로젝트 정보
프로젝트 명
MLS - My Little Shoes (나만의 신발 스타일 만들기)
기간
2022.06.28-07.06
프로젝트 목표
- DRF를 이용한 프로젝트 만들기
- Generative models 이용하기
- CRUD 숙련
팀 정보
- 팀명 : 사오이십
- 팀원 : 김동우, 김진수, 최민기, 박진우
역할 분담
김동우 : 회원가입/로그인 기능 / Generative model 사용
김진수 : 추천 스타일 페이지
박진우 : 이미지 업로드 + 결과 페이지 (결과 페이지에서 저장누르면 히스토리에 저장됨)
최민기 : 히스토리(게시판) 페이지 (+ 좋아요 + 댓글 + 즐겨찾기)
Generative model
https://github.com/crowsonkb/style-transfer-pytorch
1. Recommend 기능
신발을 brand별로 혹은 색깔별로 페이지에 호출할수있도록 만들려고하는게 주 목적이였습니다.
1) Recommend Model
# 신발 브랜드
class Brand(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
# 신발 추천 모델
class Shoes(models.Model):
STATUS_HEIGHT = (
('low', '로우'),
('middle', '미드'),
('high', '하이'),
)
STATUS_COLOR = (
('red', '빨간색'),
('orange', '주황색'),
('yellow', '노란색'),
('green', '초록색'),
('blue', '파란색'),
('indigo','남색'),
('purple','보라색'),
('white','하얀색'),
('black','검은색'),
('other', '기타'),
)
brand = models.ForeignKey(Brand, verbose_name="브랜드", on_delete=models.CASCADE)
name = models.CharField(max_length=100,unique=True)
color = models.CharField("색깔", choices=STATUS_COLOR, max_length=10)
height = models.CharField("높이", choices=STATUS_HEIGHT, max_length=10)
image = models.ImageField('신발 이미지', upload_to="static/")
def __str__(self):
return self.name
2) Recommend Serializer
# recommend/serializers.py
from rest_framework import serializers
from recommend.models import Shoes, Brand
class BrandSerializer(serializers.ModelSerializer):
class Meta:
model = Brand
fields = ['id', 'name']
class ShoesSerializer(serializers.ModelSerializer):
brand = BrandSerializer(read_only=True)
image = serializers.SerializerMethodField()
def get_image(self, obj):
return obj.image.url
class Meta:
model = Shoes
fields = [
'id',
'brand',
'name',
'color',
'height',
'image'
]
3) Recommend View
# recommend/views.py
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework import status
from rest_framework.response import Response
from recommend.serialilzers import ShoesSerializer
from.models import Shoes, Brand
# Create your views here.
class RecommendViewAll(APIView):
# 모든 신발 보여주기
def get(self, request):
allshoes = Shoes.objects.all()
response = ShoesSerializer(allshoes, many=True).data
return Response(response)
class RecommendViewBrand(APIView):
# 브랜드별 신발 보여주기
def get(self, request): # 브랜드 id를 역참조해서 shoes 모델에 있는 object를 불러오기 ( name, )
brand_name = request.GET.get("brand", "")
brand_object = Brand.objects.get(name=brand_name)
shoes_brand = Shoes.objects.filter(brand=brand_object)
# ShoesSerializer(shoes_brand,many=True)
return Response(ShoesSerializer(shoes_brand, many=True).data)
class RecommendViewColor(APIView):
# 색깔별 신발 보여주기
def get(self, request):
color_name = request.GET.get("color", "")
color_shoes = Shoes.objects.filter(color=color_name)
return Response(ShoesSerializer(color_shoes, many=True).data)
class RecommendViewHeight(APIView):
# 높이별 신발 보여주기
def get(self, request):
height_name = request.GET.get("height", "")
height_shoes = Shoes.objects.filter(height=height_name)
return Response(ShoesSerializer(height_shoes, many=True).data)
2. 기타 정보
1) 프로젝트 문서
https://www.notion.so/kimphysicsman/MLS-My-Little-Shoes-2d7eafdb6a514ae7a569f11cc04411e1
2) github
https://github.com/nbcamp-AI-2-fantastic4/mylittleshoes_backend
https://github.com/nbcamp-AI-2-fantastic4/mylittleshoes_frontend
'포트폴리오' 카테고리의 다른 글
내일배움캠프 - My Little Trip 개발일지 (0) | 2022.08.22 |
---|