전체 글(33)
-
[Django] ValueError: save() prohibited to prevent data loss due to unsaved related object
Project 테이블과 Subject 테이블이 OneToMany로 연결되어 있는데 project = Project.objects.first() subject = Subject.objects.first() 로 각 객체를 가져와서(실제로는 first() 사용 안함) 담아주었다. 그리고 나서 project에 해당하는 subject가 수정되면 project.subject.id = 3 이런 식으로 변경해 주었는데 해당 에러가 났다. ValueError: save() prohibited to prevent data loss due to unsaved related object 'subject'. 찾아 본 결과 project.subject.id는 subject의 id가 변경된 것이었고 project의 ..
2022.05.18 -
[ELK Stack] ELK Stack 이란
ELK Stack이란? ELK는 Elasticsearch, Logstash, Kibana 세 가지 오픈소스 프로젝트의 앞글자를 따서 만든 이름이다. Elasticsearch Elasticsearch는 Apache Lucene에 구축되어 배포된 검색 및 분석 엔진이다. 다양한 언어를 지원하고 고성능에 스키마가 없는 JSON 문서로 Elasticsearch는 다양한 로그 분석과 검색 사용을 위해 많은 사용자에게 사랑받는 오픈소스이다. 2010년에 릴리스된 이후로 빠르게 인기 검색 엔진이 되었으며, 로그 분석, 전체 텍스트 검색, 보안 인텔리전스, 비즈니스 분석 및 운영 인텔리전스 사용 사례에 일반적으로 사용되었다. JSON 문서 형식의 데이터를 Logstash와 같은 수집 도구나 API를 사용해 Elasti..
2022.05.12 -
[Django] Logging Handler
Python logging Handler Django의 로깅은 파이썬에서 제공하는 logging 모듈을 그대로 가져와서 사용한다. 파이썬에서 로깅을 할 때 사용되는 핸들러는 여러 종류가 있다. StreamHandler StreamHandler 클래스는 sys.stdout, sys.stderr와 같은 스트림으로 로깅을 출력한다. 즉, 쉽게 얘기하여 Console에 log를 남기게 된다. FileHandler FileHandler 클래스는 로깅 출력을 디스크 파일로 보낸다. StreamHandler 에서 출력 기능을 상속받는다. 지정된 파일이 열리고 로깅을 위한 스트림으로 사용된다. 모드는 기본값이 a(추가 모드) 이다. NullHandler NullHandler 클래스는 포맷이나 출력을 하지 않는다. 기본..
2022.04.28 -
[Django] Logging 설정
django에서의 logging python 유저들이 프로그래밍을 할 때 대부분 print 함수를 사용해서 디버깅을 할 것이다. 왜냐면 가장 간단하고 편하기 때문에... 그러나 logging을 이용하면 더 구조적이고 관리하기 쉬운 디버깅이 가능하다. logging level 로깅의 레벨은 총 5가지 단계가 있다. DEBUG : Low level system information for debugging purposes 말 그대로 디버깅 용도이다. 변수에 할당된 값이 무엇인지 확인하는 정도...? INFO : General system information 일반적으로 찍히는 로그이다. 유저의 로그인 기록, 파일 업로드 기록 등 django에서는 default값으로 사용한다. WARNING : Informa..
2022.04.26 -
[Django] timezone
python에서 시간을 얻는 방법 from datetime import datetime datetime.now() # 결과: datetime.datetime(2022, 3, 14, 0, 33, 21, 553440) django에서 시간을 얻는 방법 from django.utils import timezone timezone.now() # 결과: datetime.datetime(2022, 3, 14, 0, 33, 21, 677327, tzinfo=) timezone.localtime() # 결과: datetime.datetime(2022, 3, 14, 0, 33, 21, 350281, tzinfo=) django에서 시간을 표현하는 방법 USE_TZ 이 False이기 때문에 강제로 한국 시간을 DB에 저장..
2022.04.15 -
[Django] Application labels aren't unique
Application labels aren't unique django에서 signals를 사용 중 해당 에러가 발생했다. signals를 사용할 경우 apps.py를 수정하고 settings의 INSTALLED_APP에 해당 앱을 집어넣으라고 나와있었다. 그러다 최근 django에서는 해당 app을 넣어주지 않아도 자동으로 실행을 하는 것 같다. 따라서 문제를 해결하기 위해서는 그냥 저 boards.apps.BoardsConfig 를 지워주면 된다.
2022.04.11