본문 바로가기

전체 글48

Djongo datetime JSON Serializable Error model에서 deadline = models.DateField(auto_now_add=False) 형태로 DateField를 만들었습니다. Serializer로 데이터를 넣는건 문제가 없었는데, 가져와서 Response 해주는게 문제였습니다. 파이썬으로 불러올 때 datetime type으로 오기 때문에, json으로 리턴해주는게 문제였습니다. 이를 해결하기 위해, 이전 글에서 작성했던 JSONEncoder에 추가적으로 아래와 같이 수정했습니다. https://zih0.tistory.com/13 import datetime class JSONEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, ObjectId): return str(o) .. 2021. 8. 19.
Djongo ObjectID $oid 형식 수정하기 저는 현재 Djongo를 이용해서 Django + MongoDB 환경에서 프로젝트를 진행중입니다. Model.objects.get 또는 filter를 사용해서 데이터를 불러올 경우, Response 안에 ObjectID가 아래와 같이 반환되는 경우가 있습니다. { "_id": { "$oid": "abc123" } } $oid 부분이 마음에 들지 않았고 아래와 같이 반환되었으면 했습니다. { "_id": "abc123" } 구글링을 하다가 답을 찾을 수 있었습니다. https://stackoverflow.com/questions/16586180/typeerror-objectid-is-not-json-serializable#16586277 이를 위해 JSONEncoder를 수정해주었습니다. 타입이 Objec.. 2021. 8. 14.
VanillaJS로 Modal 창 만들기 1. index.html body 상단에 div를 하나 만든다. 2. js에서 showModal() 함수 작성 export const showModal = (message, callback) => { //모달 내용을 modal-overlay div안에 추가 //modal-overlay-backgroud는 배경 클릭했을 때, 모달 닫게 해주기 위해 만듬. document.getElementById('modal-overlay').innerHTML = ` ${message} OK `; //modal-overlay div에 active클래스를 추가해 display 보이게 함. document.getElementById('modal-overlay').classList.add('active'); //modal-ov.. 2021. 8. 13.
MongoDB Error: querySrv ENODATA 잘 되던 몽고DB가 갑자기 접속해보니까 위와 같은 에러가 발생했습니다. ( Atlas 사용 시 ) 안될리가 없는데 안되서 당황했는데, 검색해보니까 스타벅스에서 접속했을 때 발생하는 에러였습니다. ( 해외에서도 스타벅스에서 위와 같은 에러가 발생한 사람이 많았다 ) ref: https://stackoverflow.com/questions/54484673/error-querysrv-enodata-mongodb-tcp-blog-cluster-0hb5z-mongodb-net-at-queryreq Error: querySrv ENODATA _mongodb._tcp.blog-cluster-0hb5z.mongodb.net at QueryReqWrap.onresolve [as oncomplete] It looks li.. 2021. 8. 12.
회원가입(SignUp) 페이지 비밀번호 내용 보이기 input태그의 type을 password로 주면 입력한 내용이 *** 처럼 보이지 않는다. 요즘 대부분의 서비스를 보면 비밀번호 오른쪽에 이모티콘을 클릭 시, 입력한 내용을 확인하고 다시 숨길 수 있는 기능이 있다. 이 기능은 이모티콘을 클릭하면 type을 text로 바꾸고 다시 클릭하면 password로 바꿔주는 간단한 기능이다. boolean state를 활용하여 아래와 같이 input의 type을 동적으로 넣어준다. ... const [hidePassword, setHidePassword] = useState(true); const toggleHidePassword =()=>{ setHidePassword(!hidePassword); } ... 2021. 8. 10.
터미널 SSH로 GCE 접속하기 Google Compute Engine은 웹에서 SSH를 클릭해 접속할 수 있지만 아무래도 로컬에서 터미널로 접속하는게 편한 것 같습니다. SDK 설치 우선 Google Cloud SDK를 설치해주세요. https://cloud.google.com/sdk/docs/install Google Cloud SDK 설치 | Cloud SDK 문서 이 페이지에는 Cloud SDK 설치를 선택하고 유지하기 위한 안내가 포함되어 있습니다. 설치 안내 참고: 프록시/방화벽을 사용하는 경우 자세한 설치 방법은 프록시 설정 페이지를 참조하세요. Linux C cloud.google.com 운영체제별 설치방법은 공식문서를 참고해주세요. 저는 Mac을 사용중이라 Mac을 기준으로 설명하겠습니다. 공식문서에서 압축 파일을 다운.. 2021. 8. 9.
Django Docker 이용해서 배포하기 프로젝트가 아직 진행중이지만 API문서를 공유하기 위해 Swagger를 활용했습니다. API문서를 띄우기 위해 일단 배포를 해야 했습니다. 이전까지는 배포할 때, git clone으로 서버에 프로젝트를 저장하고 api 업데이트 시 git pull을 수동으로 하는 방식으로 진행했습니다. 하지만 이번엔 프로젝트 초기부터 배포를 진행하는 상황이라 위와 같은 경우는 비효율적으로 느껴져 도커를 사용해보기로 했습니다. Github Actions를 활용해 deploy라는 브랜치가 push되면 도커 이미지를 빌드하고 배포하도록 했습니다. 우선 deploy라는 브랜치를 만들고, requirements.txt 파일을 생성했습니다. $ pip freeze > requirements.txt 그리고 requirements.tx.. 2021. 8. 8.
DRF에서 Google Cloud Storage 사용하기 - Django에서 GCS 연결하기 ref : https://django-storages.readthedocs.io/en/latest/backends/gcloud.html#installation Google Cloud Storage — django-storages 1.11.1 documentation Your Google Storage bucket name, as a string. Required. Your Google Cloud project ID. If unset, falls back to the default inferred from the environment. The OAuth 2 credentials to use for the connection. If unset, falls back to the default inferred .. 2021. 8. 8.
DRF에서 Google Cloud Storage 사용하기 - GCS 생성 및 키 발급 이미지 파일 업로드 기능을 구현하기 위해 S3나 GCS를 사용하려고 했습니다. 아마존 프리티어 기간이 다 끝난 관계로 이번에 구글 GCP로 전체적인 서버를 구현하였습니다. Cloud Storage 버킷 생성 우선 Cloud Storage 버킷을 생성합니다. GCP 콘솔에 들어와 Cloud Storage 선택 후, 버킷 만들기를 클릭합니다. 버킷 이름을 지정해줍니다. 다음으로 버킷 서버 위치를 지정합니다. 저는 서울을 선택했습니다. 저는 어플에서 이미지 url을 이용해 이미지를 띄울 거기 때문에, 공개 엑세스 방지 적용 체크를 해지해주었습니다. 위 과정이 끝나면 버킷이 만들어집니다. 서비스 계정 만들기 다음으로는 Cloud Storage를 Django에서 접근할 수 있도록 서비스 계정을 만들고 키 값을 발.. 2021. 8. 8.