전체 글 217

Lv.1 바탕화면 정리

코딩테스트 연습 - 바탕화면 정리 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 : 리턴 값으로 만들어야 할 min/max 값들을 꾸준히 업데이트해주는 코드 def solution(wallpaper): min_x, min_y, max_x, max_y = 1e5, 1e5, 0, 0 for i in range(len(wallpaper)): for j in range(len(wallpaper[0])): if wallpaper[i][j] == '#': min_x = min(min_x, i) ma..

cording test 2023.07.14

장고 50문 50답 채우기(1)

1. Django가 무엇인지 설명하시오 Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework) 쉽고 빠르게 웹사이트를 개발할 수 있도록 돕는 구성요소로 이루어진 웹 프레임워크 2. Django를 백엔드 스택으로 선정한 이유는 무엇입니까? 지금껏 공부한 언어인 파이썬을 온전히 활용할 수 있음 웹 개발에 간편한 기능들이 기본적으로 탑재되어 있음 장고를 사용하면 웹서버를 설치하지 않고 파이썬 명령어 하나로 서버를 실행할 수 있다. 파이썬 코드로 데이터베이스를 충분히 다룰 수 있다. 보안 기능 제공 장고 보안 가이드가 기본적으로 제공됨 3. Django에는 어떤 장점이 있습니까? APP 단위 독립적 구성 하나의 App은 각각 별도의 모델(Mod..

Framework/Django 2023.07.14

7월 2주차 WIL

약 1주일 간 공부하고, 프로젝팅한 것들을 블로그에 담지 못했다. 한 것이 없어서 적지 못한 것은 아니지만, 다른 주에 비해 뭔가 실속이 있다는 느낌은 없었다. 그래서 오늘 하루의 실속을 내려고 비효율적인 시간을 날려먹다 보니 자연스럽게 블로그와 잠시 멀어지게 되었다. 내일이면 최종프로젝트 발표인데, 수료하고 나서 완전히 몸이 퍼지기 전에 천천히 정상궤도로 몸을 돌려놔야 한다. 물론 시차도..ㅠ 저번 주말을 통해 Cookai의 기본 프론트를 거의 마무리하면서 배포에 성공했고, 스파르타 팀과 그 외 사용자들의 사이트 이용을 통해 피드백을 받고 수정할 부분에 대해 반영하는 한 주였다. 대체로 피드백은 백엔드 부분보다는 프론트 부분에서 많이 왔다. 아무래도 우리가 백엔드를 목표로 하다 보니.. 제발 백엔드 쪽..

Weekend I learned 2023.07.09

대댓글 작성

class Comment(models.Model): parent = models.ForeignKey('self', related_name='reply', on_delete=models.CASCADE, null=True, blank=True) 대댓글 모델을 굳이 추가할 필요 없이, 댓글 모델에 다음과 같이 스스로를 참조하는 코드를 작성하면, 그것이 곧 대댓글이 된다. 시리얼라이저에는 다음과 같이 함수를 오버라이딩해서 가져오면 된다. class CommentSerializer(serializers.ModelSerializer): reply = serializers.SerializerMethodField() class Meta: model = Comment fields = ('board', 'id', 'use..

Framework/Django 2023.06.28

CookAI 중간 점검

1. MVP 중간발표 자료(기입) 프로젝트 정보 서비스명: cookai 서비스 기획 의도: 사용자의 취향과 식자재 상황에 알맞은 레시피를 추천해주는 레시피 개인화 추천 서비 스 및 사물인식기능 제공 프로젝트 한 줄 설명: 나도 cookai만 있으면 손쉽게 메뉴를 선정하고 요리하고, 남은 재료를 관리 할 수 있다?! 사용자가 가지고 있는 식재료에 대한 정보를 제공 받으면, 데이터 베이스에 존재하는 레시피 중 가장 적절한 레시피를 추천하고, 부족한 식재를 구매할 수 있도록 연결해주는 서비스를 제공합니다. 최종 MVP 스펙: 사용자 관련: 기본 CRUD-회원가입/토큰인증로그인/회원탈퇴/이메일인증/비밀번호재설정/회원정보수정/프로필사진, 마이 페이지(사용자 정보 및 관련 댓글/글 조회가능),팔로우/팔로잉, 소셜로..

project/project 2023.06.27

6월 4주차 WIL

최종 프로젝트를 시작한지도 3주가 지났다. 사실 과정이 많이 좋지 않았다. 가능한 좋은 것만 적고 싶었지만 영 좋지 않았다. 지치게 되면서 소통이 점점 줄어들게 되었고, 프론트로 제대로 이어가지 못한 원인이 되었다. 마감 기한을 모두 지키지 못했다. 그것에 대해서 크게 두 가지 이유가 있었는데 하나는 나의 DRF 이해도 문제였고, 하나는 소통 능력의 부재였다. 먼저 이해도 문제다. 클론 코딩에 물든 나머지 이해하지 못한 채 베끼려는 나쁜 습관들이 많이 나왔다. 그러다 보니 제대로 적용하지 못하는 경우가 많았고, 이것들을 반성했을 때는 이미 늦었지만 클론코딩의 의미를 다시금 느끼고 공부하고 적용한 개념들을 메모/블로그 정리를 통해 내 것으로 만들었다. 물론 아직 멀었지만 캠프 초기 때의 마음을 다시 잡고 ..

Weekend I learned 2023.06.26

장고 Q 사용 (Code Refactoring)

Q는 장고 model에서 제공하는 orm 중 하나로, DB filter 조건에 and / or문을 추가하고 싶을 때 사용한다. 그럼 그냥 where에 or 문 넣으면 되는 걸 왜 이렇게 어려운 용어로 필터링할까? 코드가 간편해지기 때문. # 예시 from django.db.models import Q def get_queryset(self): search_key = self.request.GET.get("search", None) q = Q() if search_key: q = self.search(search_key) category_id = self.request.GET.get("category") 위의 코드를 Q를 쓰지 않고 리팩토링하면 어떻게 될까? def get_queryset(self): se..

Framework/Django 2023.06.23

taggit 공식 문서 읽어보기

프로젝트에 태그를 만들어보기 위해 taggit 공식문서를 읽어보았다. 먼저 필요한 패키지 다운로드와 환경설정이 필요하다. 내 프로젝트는 가상환경을 poetry로 했기 때문에 poetry 명령어를 썼다. # 터미널 명령어 poetry add django-taggic-serializer poetry install # settings.py INSTALLED_APPS = ( ... 'taggit', 'taggit_serializer', ) 관리자가 설정된 태그를 관리하게 하기 위해서는 다음과 같은 코드를 작성해둬야 한다. # admin.py class MyModelAdmin(admin.ModelAdmin): list_display = ["tag_list"] def get_queryset(self, request..

Framework/Django 2023.06.21

Queryset method 정리

Queryset Django ORM에서 제공하는 데이터 타입으로, 데이터베이스에서 전달받은 모델의 객체 목록 클래스 모델 중 필터링하는 select, 값을 만드는 create, 값을 변경해주는 update로 나뉨 1. select 클래스 명.objects.all() : 해당 테이블 안에 있는 모든 데이터 조회. QuerySet 타입으로 반환. 클래스 명.objects.get() : 하나의 row만 조회. 주로 pk컬럼으로 조회한다. 결과가 1건 이상일 때는 에러를 발생시킨다. QeuerySet 타입이 아닌 객체 타입으로 반환. 클래스 명.objects.filter() : 특정 조건에 맞는 row만 조회하고 싶을 때 사용한다. QuerySet 타입으로 반환. 클래스 명.objects.exclude() : ..

Framework/Django 2023.06.20

시리얼라이저 오버라이딩

RecipeIngredient에 작성할 때 1. Ingredient에서 그 재료를 가져오거나 2. Ingredient에 없을 시 그 재료를 사용자가 직접 생성하는 방향 으로 코드를 짤 생각이다. # Views.py class RecipeIngredientView(APIView): permission_classes = [permissions.IsAuthenticatedOrReadOnly] def post(self, request, article_id): serializer = RecipeIngredientCreateSerializer(data=request.data) if serializer.is_valid(): serializer.save( article_id=article_id, ingredient_i..

Framework/Django 2023.06.19