전체 글
-
django-filters 를 사용하여 복잡한 환경에서 OrderingFilter 사용하기기술/Django 2021. 9. 24. 19:43
django-filters 를 사용한다면 OrderingFilter 를 FilterSet 쪽에 붙이는 것이 더 직관적이고 편할 수 있습니다. django-filters 라이브러리에서 OrderingFilter 에 대해 간단한 설명이 있지만 조금 더 복잡하게 사용할 필요가 있었기 때문에 어떻게 사용했는지 공유하고자 합니다. 기본 사용법 OrderingFilter 를 한 키로 정의하고 그 안에 fields 속성에 Ordering 에 사용할 필드들을 나열합니다. 위 처럼 작성하면 ?ordering=username,-first_name 와 같이 QueryString 에 포함시킬 수 있습니다. 대부분의 간단한 정렬은 가능하지만, 예외 케이스가 몇개 존재합니다. class UserFilter(FilterSet): ..
-
Django 에서 일시적으로 auto_now, auto_now_add 를 disable 시키는 법기술/Django 2021. 9. 24. 19:39
종종 엑셀에서 가끔 데이터를 마이그레이션 할 때가 있습니다. 그 때 특정 필드를 마이그레이션 데이터 값으로 채워넣어야하지만 auto_now, auto_now_add 가 설정되어 있다면 저장 시 데이터가 마이그레이션 데이터가 아니라 최신 값의 Datetime 으로 설정됩니다. 그래서 그 때마다 사용할 수 있는 문법이 필요했습니다. TemporarilyDisableAutoNowAndAutoNowAdd 주어진 모델의 save, bulk_ 메서드를 사용할 때 auto_now, auto_now_add 필드를 비활성화하는 Context Manager 를 생성하기로 했습니다. 매개변수 Model: auto_now, auto_now_add 를 비활성하고싶은 Django 의 모델을 제공합니다. field_names: 여..
-
Synology 의 Photostation 포트 변경 및 도메인 연결도구 2021. 9. 24. 19:37
사진을 관리하고 보여주는 것 중 가장 인기있는 패키지인 Photo Station 을 설치하고 사용했습니다. 별다른 설정 없이 다른 폴더 공유와 동일하게 사용할 수 있을 줄 알았는데 Photo Station 은 다르게 동작했습니다. DSM 과는 다른 웹 서버를 열고 거기서 관리되도록 하고있습니다. 그렇기 때문에 다른 포트로 열어 연결할 필요가 있었습니다. 설치 패키지센터 를 찾아서 Photo Station 을 찾아 설치합니다. 단순히 설치 버튼만 누르면 됩니다. DSM 설정 제어판 -> 응용프로그램포털 -> 역방향프록시 에 들어가서 생성을 누릅니다. 사진과 같이 입력합니다. 빨간 부분만 본인의 설정에 맞게 채워주시면 됩니다. 포트를 설정해 채워주세요 를 채워주세요 공유기 설정 의 값을 가지고 외부에서 접속..
-
Django Filters 에서 하나의 Key를 가지고 여러 값 필터하기 ( MultipleFilter )기술/Django 2021. 9. 24. 19:34
django-filters 에서 여러 값을 필터하는 방법으로는 몇가지 있습니다. BaseInFilter 로 key=value1,value2 같은 컴마로 구분하는 필터 MultipleChoiceFilter 로 key=value1&key=value2 같은 키로 구분하는 필터 이 중에서 같은 키로 여러 값을 구분하기 위하여 MultipleChoiceFilter 를 커스텀합니다. 하지만 MultipleChoiceFilter 는 Choice 값이 있어야만하는 에러를 발생하고, 이를 범용성 있게 하고 싶었기 때문에 다른 필터 유틸을 만들게 되었습니다. MultipleFilter MultipleChoiceFilter 가 django-filters 라이브러리에서 제공하는 단 하나뿐인 다중 필터 입니다. 하지만 이름에서..
-
Synology 에서 보안을 위해 HTTPS 를 사용하고 다른 포트를 사용하는 방법 ( DSM )도구 2021. 9. 24. 19:28
이번에 개인 저장소를 위한 Synology 를 구매하였습니다. 기본적으로 세팅해주는 것들이 많지만 그 외에도 설정해야하는 것들이 많았습니다. 그 중 가장 오래걸렸던 포트 설정, HTTPS 설정에 대해 정리하고자합니다. 으로 표시된 것은 각자 개인 설정에 맞게 교체해주시면 됩니다. 해당 내용은 iptime(공유기) 과 synology 를 가지고 설명합니다. Domain 세팅 방법 도메인을 세팅하기 전 준비해야하는 것이 두가지 있습니다. 개인 도메인 개인 아이피 개인 도메인의 경우에는 어느 사이트를 사용하셔도 상관 없습니다. 개인 아이피의 경우는 NAS 와 연결할 공유기의 WIFI 에 연결 후 https://www.whatismyip.com/ 에 접속하여 본인의 아이피 를 가져옵니다. 위에 보이는 빨간 곳의..
-
Nginx 를 통해 Cloudfront 를 사용하는 방법기술 2021. 9. 24. 19:22
Django Template 으로 이루어진 내부 시스템의 일부 URL 을 React 와 REST API 로 구성된 2.0 버전으로 보이게하기위해 nginx 설정이 필요했었습니다. URL 을 포워딩 하기위한 nginx 설정 요청이 온 URL 을 다른 URL 로 변경할 수 있는 방법이 두가지 있습니다. rewrite 을 통해 URL String 을 정규식을 통해 변경할 수 있습니다. proxy_pass 를 통해 들어온 요청을 다른 곳으로 포워딩 할 수 있습니다. 추가적인 Nginx 설정 Cloudfront URL 이 도메인이므로 IP 로 변경하는데 사용하는 DNS 를 resolver 라는 예약어를 통해 지정해야합니다. 저희는 AWS 에서 nginx 설정을 사용하고 있었고, AWS 의 기본 DNS 는 172...
-
터미널에서 특정 포트를 Kill 하는 방법기술 2021. 9. 24. 19:17
터미널에서 특정 포트가 사용되고 있을 때 그 포트를 사용하는 프로그램을 꺼야할 필요가 있습니다. 저의 경우 Remote Forwarding 을 사용할 때 서버의 포트와 로컬의 포트를 SSH 로 연결해 놓는데 이 연결이 잘못되었을 때 해당 포트를 사용하고 있는 것을 꺼주어야 다음 접속 때 정상적으로 재연결됩니다. lsof 를 사용하여 열린 포트의 프로세스 번호를 가져와서 포트 사용을 없애는 방식입니다. sudo kill -9 $(sudo lsof -t -i :)
-
Django 에서 String datetime 을 aware 한 datetime 으로 변경하는 방법기술/Django 2021. 9. 24. 19:16
REST API 를 사용하다보면 프론트에서 datetime 정보를 받을 때가 있습니다. API 로 받았기 때문에 해당 정보는 String 형태를 가지고 있습니다. 이를 Python 의 datetime 형태로 바꾸는 방법이 여럿 있겠지만 django 에서 지원해주는 util 이 있어 소개해드리고자 합니다. 시작하기 전, 사전 지식 navie vs aware naive datetime: timezone 정보를 포함하지 않는 datetime aware datetime: timezone 정보를 포함하는 datetime python 내장 datetime 를 가지고 ORM 필터를 할 때 "naive dateimte 을 aware 하게 바꿔주세요" 하며 Warning 으로 콘솔에 찍힐 때가 있습니다. DB 는 tim..