목록Django/오늘의 공부 (8)
개발자 블로그

datetime객체는 naive datetime(without timezone)과 aware datetime(with timezone) 객체가 있습니다. 현재 timezone이 활성화되어있는 데(use_TZ = True, in setting), created_at 필드에 timezone이 없는 naive datetime 객체를 대입하셔서 발생하는 "경고" 입니다. 이를 timezone이 있는 aware datetime으로 변환하셔서 대입하시면 해당 경고는 사라진다. 참고로 서비스가 여러 timezone의 유저에게 서비스를 제공한다면 timezone 설정을 살려두시는 것(use_TZ=True)이 좋습니다. 대한민국은 하나의 시간대만 있지만, 해외에서는 국내 서비스라 하더라도 여러 시간대가 있는 나라가 많고..

배포 - docker / nginx / uwsgi docker docker란? windows에서 virtualbox를 설치해 가상화 환경을 구축하는 것처럼, docker를 사용해 격리 된 공간에서 서비스나 os를 가상화 하여 띄울 수 있다. docker의 격리 된 공간에서 동작하는 것을 컨테이너라 한다. virtual machine과 같이 가상화를 하는 것은 비슷하지만, 구조적으로는 차이가 있다. docker-compose와 같은 container management 프로그램을 사용해 서비스 환경을 쉽게 구축 할 수 있다. 왜 docker를 사용하는가? docker-compose를 활용하면 원하는 아키텍처를 빠르게 구성 할 수 있다. 서비스가 host에서 동작하는 것이 아닌, container에서 동작하..
product 앱에서 가 포함된 product 테이블을 생성해주세요 django serializer를 사용해 validate / create / update 하는 기능을 구현해주세요 custom validation 기능을 사용해 노출 종료 일자가 현재보다 더 이전 시점이라면 상품을 등록할 수 없도록 해주세요 custom creator 기능을 사용해 상품 설명의 마지막에 “에 등록된 상품입니다.” 라는 문구를 추가해주세요 custom update 기능을 사용해 상품이 update 됐을 때 상품 설명의 가장 첫줄에 “에 수정되었습니다.” 라는 문구를 추가해주세요 product 앱에서 을 담고 있는 review 테이블을 만들어주세요 현재 날짜를 기준으로, 노출 종료 날짜가 지나지 않았고 활성화 여부가 True..

''' 내가 사용한 모듈은 내가 커스텀을 할 수 있어야 한다.''' 기능에 따라 커스텀을 자유롭게 활용할 수 있는 장고 개발자가 되보자. 1. 매니투매니 필드의 경우, 객체 생성시 바로 create는 안되고 생성 후에 add를 해서 객체에 추가를 해야한다. https://stackoverflow.com/questions/6996176/how-to-create-an-object-for-a-django-model-with-a-many-to-many-field 객체를 넣을때랑, 값을 넣을때랑 쿼리 선언이 차이가 난다. 2. serializer 심화 2-1) validator 커스텀 is_valid(raise_exception =True) -> 벨리데이션을 통과하지 못하면 다음 단계로 못 넘어감. 2-2) cr..

1. 서버에서 request한 데이터 받을 때 json data -> request.data.get() form data -> request.POST.get() 2. 폴더 생성시 폴더 안에 파일을 모듈 처럼 사용하기 위해선 __init__을 만들어줘야한다. 그래야 import할 때, 경로 문제에 대한 에러가 안뜬다. 3. testCaser를 사용하여 테스트 코드 작성 시, 원하는 값에 대한 것이 객체일 때는 새로 생성해줘야한다. 테스트 코드 상에선 기존의 디비와 같이 쓰는 것이 아닌 따로 비어있는 디비를 사용하기 때문 4. Article과 Category 는 N:N으로 엮여있다. 유저로 부터 객체를 받아와서 생성하는 서비스 로직을 구상할 때, 해당 값은 리스트 형태로 들어온다. 값이 다수가 존재할 수 있..

1. postman 활용 1-1. postman에서 csrf 토큰 넣어주기. 1-2. postman을 활용한 유저 로그인 json은 '' 이 안되고 쌍 따움표로 "" 안에 키(필드 네임) 벨류(아이디 또는 비밀번호 값) 값 설정 2. serializes.ModelSerializer meta class 를 통해 필드를 지정하고 커스텀할 수 있음. password는 리턴할 때 writeonly 로 반환 반환을 아예 안하면 안되는가? 비밀번호인데? 이 부부은 추후 사용자가 정보를 수정하거나 업데이트 해야할 때, 필요하기 때문 그래서 반환을 하되 extra_kwargs로 read는 제외한 writeonly를 설정 many = True 설정하면 쿼리셋, 기본은 False로 객체만 반환 순환참조에러 -> Impor..

1. settings.py에 비밀번호나 깃허브에 노출이 되면 안되는 것들 관리는 환경변수로 설정하면 좋다. 파일을 따로 만들어 깃이그노어하는 경우도 있긴한데 리눅스는 보편적으로 환경변수에다 설정을 하는 방법으로 한다고 한다. -> 추후에 리눅스 환경에서 적용해보자! 2. 장고의 middleware 사용자와 서버가 통신을 주고받을때 이 레이어를 거쳐서 정보를 주고 받는다. 이 미들웨어의 다양한 기능들이 있어 데이터의 정보를 주고 받을 해당 웨어를 거쳐 정보가 전달된다고 한다. 3. Model.object.get 과 filter의 차이 get은 객체 반환(1개), filter는 객체의 집단 리스트의 형태로 반환 0개 이상의 객체들을 리스트로 반환. get의 경우 다수 또는 객체가 없는 것을 쿼리를 보내면 ..

-Wigs란? 웹서버와 연결시켜주는 프로토콜 같은 업무 웹서버와 파이썬 서버가 소통할 수 있게 해주는 미들웨어! -asgi란? wigs는 동기 함수만 지원, 비동기 방식을 지원 및 wigs를 보완하고자 나온 wigs의 상위호환 버젼. -포린키에 유니크 설정 True로 하면, onetonone 필드와 동일 실제로 아래와 같은 문구가 뜬다. 대충 해석해보면 포린키에 유니크 키를 트루로 설정하는 것은 onetoone필드로 설정하는 것과 같은데 그냥 OnetoOne필드로 설정해서 써~ 이런 말이다. -admin page 꾸미기 Def __str__ -> 어드민 페이지 어트리뷰트의 값을 원하는대로 보여지게 할 수 있다. 원래는 객체형태로 나오는데, 유저 프로필을 생성할 때, 설정한 이름으로 나오는 것을 확인 할 ..