오늘 한 것
[O] : 알고리즘 풀이 - 백준 3003 킹, 퀸, 비숍, 룩, 나이트, 폰
[△] : 장고 심화 강의 듣기
- 1.5~ 3주차까지는 듣고 싶다 : 듣는 중... TIL 올리고 더 들을거임..
[O] : 후발대 강의듣기 7-9시
- 오늘 강의로 애매했던 개념을 확실히 잡은 것 같다! Good!
알게 된 것
- python class
- super()
기존 기능에 +a 를 해주고싶다! 할때 사용한다
기존 기능에서 일부분을 수정하고싶으면 처음부터 새로 오버라이딩하는 방법밖에 없다.
그래서 한 함수 내에서 모든 기능을 쓰지 않는다!바뀔 가능성이 있는 함수를 나눠놓고 그 함수를 오버라이딩, 필수 기능이면 묶고 등등 상황에 따라 적용함
- __init__(self, *args, **kwargs)
- 실행 함수 __init__, class를 불렀을 때 자동으로 실행되는 부분이다.
- * 는 동적인 값을 받겠다 는 의미
*args 는 자주쓰지는 않지만 고정된 값을 받아 변경할 필요가 없을 때 받게됨 ex. 계산기같이 고정된 일반 값을 받는경우
**kwargs를 훨씬 많이 사용, 데이터 받는 기본 값! - 입력값을 앞에서부터 차례로 받아가므로 입력 순서 지정도 중요함!
- *: list(args) 언패킹
- **: dict(kwargs) 언패킹
# 함수에 list로 된 값을 입력할때도 *를 쓴다.
def add (a, b, c):
print(a, b, c)
add(*[1, 2, 3])
add(1, 2, 3)
#결과는 동일하지만 값을 *args로 받으면 깔끔!
def add(*args):
add([1, 2, 3]) #결과 ([1, 2, 3])
#이렇게 넣으면 해당 list가 [0]번 요소로 들어감
- sort_dicts=False는 데이터가 입력되어있는 순서대로 나오도록 한다.
print(set_profile(**profile), sort_dicts=False)
- Django useful codes
- 아래 둘은 같은 값을 가져온다.
- 장고에서 원하는 데이터 찾아오기
데이터 object 가져오기
Try :
article = Article.objects.get(id=article_id)
except Article.DoesNotExist:
return Response({“error”: “존재하지 않는 오브젝트”}, status=400)
=> get은 거의 try except 랑 쓰인다고 보면 됨
get을 가져오지 못하면 오류가 무조건 나게 되어있기 때문.
또는 get_object_or_404 모듈을 사용하면 된다.
From django.shortcuts import get_object_or_404
데이터 queryset 가져오기
Article.objects.filter(created_data=“날짜“) #날짜와 같은 데이터
Article.objects.filter(created_data_lte=“날짜“) #날짜 이전인 데이터
- lt. : less than <
- lte : less than equal <=
- gt : greater than >
- gte : greater than equal >=
- filter.(key값__여기에_쓴다="value"
- __contains ~를 포함하는 조건으로 데이터 검색
- __in=["운동", "산책"] 이 list 에 포함되어있는 데이터 검색
- __startswitch ~로 시작하는 데이터 검색
- __endswith ~로 끝나는 데이터 검색
- filter 특정 조건이 매칭되는 데이터를 가져옴
- exclude 특정 조건을 제외하고 데이터를 가져옴
추가 필터링 or 제외하기
- 방법1 : 한 줄 씩 작성해 queryset 변수에 담아주기
queryset = Model.objects.filter(title__contains="제목")
queryset = queryset.objects.filter(created_at__gte="2023-01-01")
queryset = queryset.objects.exclude(is_active=False)
- 방법2 : 조건을 한 문장에 넣기
쉼표로 , 구분하여 한 줄에 담아도 된다. (and 조건. 두 조건을 모두 만족하는 결과물만 필터링이 됨)
Model.objects.filter(title__contains="제목", content__contains="내용")
or 조건을 사용하고 싶으면 Q 모듈과 | 파이프를 사용해 표현한다.
from django.db.models import Q
Article.objects.filter(Q(title__contains=”제목” | content__contains = “내용”))
쿼리셋 정렬
order_by(“created_at”) 정순
order_by(“-created_at”) 역순
order_by(“?”) 무작위 ->python random model = pseudo 이게 뭔말입니가..? 나머지 공부 당첨
조건에 맞는 object를 가져오거나 (없다면) 생성하기
- get or create : 검색해서 가져오거나 만들어라!
obj, created = Article.objests.get_or_create(
title=“제목”,
content=“내용”,
)
=> 왜 변수가 2개일까?
def get_or_create(**kwargs):
return kwargs, True(False)
obj, created = get_or_create() #get값, create값 2개를 받기때문에 변수도 2개
print(obj, create)
이전 학습내용을 바탕으로 내일 할 것
- 내일 오전 강의있음 10시!
- 장고 심화 강의 마저 듣기
- 이번주 공부한 것 정리하기
- 주말동안 하고싶은 것
- 지난 팀프 코드 고도화
- 장고 튜토리얼 끝내기
느낀점:
열심히는 사는데 걸음이 늦어지는 기분이 든다.
폭발적 성장의 시기는 지나버린 듯..
그치만 아직도 모르는게 많고, 지금도 느려졌을 뿐이지 성장 안하고 있는건 아니니까 힘을 내쟈! 빠샤
'AI 웹개발반' 카테고리의 다른 글
[WIL]:06 장고 심화 주간 (0) | 2023.04.23 |
---|---|
[TIL] signin기능 사용에서의 500, 401 오류 해결 (0) | 2023.04.21 |
[TIL] 오늘 공부, 장고 기초 마무리 (0) | 2023.04.18 |
[TIL] Django, generic views에 대해 알아보자 (0) | 2023.04.17 |
[TIL] 수정 기능, save & update (0) | 2023.04.15 |