본문 바로가기

포트폴리오

내일배움캠프 - My Little Shoes 개발일지

스파르타 코딩클럽

내일배움캠프 AI 웹개발자양성과정 2회차

유화제작 팀 프로젝트 개발일지

0. 프로젝트 정보

프로젝트 명

MLS - My Little Shoes (나만의 신발 스타일 만들기)

기간

2022.06.28-07.06

프로젝트 목표

  1. DRF를 이용한 프로젝트 만들기
  2. Generative models 이용하기
  3. 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