싸이트를 운영하다보면 종종 예상하지 못한 문제가 생긴다. 로컬에서야 이럴때 그냥 프린트문으로 찍어보면서 해결해도 되지만, 실제 프로덕션에서 그러기는 어렵다. 이 때 도움되는 것이 로그 파일인데 장고에서는 로깅하는 것을 자체에서 제공해주고있어 매우 편리하게 적용이 가능하다! 장고의 로깅은 파이썬에 빌트인으로 들어가 있는 로깅 기능을 사용하고 있어 만약 장고 문서에 설명이 부족한 것 같으면 파이썬의 로깅에 대한 설명을 보면 된다. 어쨌건 파이썬의 로깅은 아래의 네 부분으로 이루어져있다. 나름 번역을 했으나 이게 뭔 말인지 모르겠다면 원문을 보는 편이 낫다.... 원문링크 Loggers - 다섯 개의 로그레벨이 있다. DEBUG - INFO - WARNING - ERROR - CRITICAL 순으로 높아진다...
장고는 엔간한건 다 제공해주고 있고, 메일보내는 방법도 제공하고 있긴 하지만, 실질적으로 운영해보면 클라우드 서비스상의 정책 등으로 안되는 경우가 많다. 이런 이유로 인해 메일 보내기 기능을 추가할 때 외부 서비스를 활용하기로 했다. 처음에는 AWS SES를 쓰려고 했는데 웬걸... 해당 서비스는 그냥 바로 쓸수 있는게 아니라 블특정 다수에게 메일을 보내려면 샌드박스에서 탈출해야하는데 이 샌드박스를 나가기 위해선 AWS에 신청한 후 승인을 받아야 한다. 시간이 다소 지체될 것 같아서 그냥 구글꺼를 쓰기로 했다. 구글메일 smtp를 사용할거면 우선 계정의 보안 설정을 건드려야한다. 구글의 계정사진 옆의 점 9개가 있는걸 눌러보면 'Google계정'이 있다. 이걸 누른 다음 '보안'을 클릭하면 해당 페이지에..
장고에서는 기본적으로 제공해주는 어드민이 있다. 처음에 봤을땐 그냥 데이터베이스 직접 보는거랑 이게 뭔 차이인가.. 하는 생각을 했었는데, 문서(Django Document link)를 읽어보니 제법 기능이 많았다. 간편하게 커스터마이징하기 쉬운 것은 아래와 같다. list_display 말 그대로 모델어드민의 리스트 상에서 어떤 목록이 보여질지를 정하는 것이다. 해당 모델의 컬럼 중에서 리스트 상에서 보여줄 컬럼을 정할 수 있다 list_display_links 리스트 상에서 해당 객체의 수정 페이지로 이동하는 링크를 어떤 컬럼에 걸지 정한다. 당연히 여기에서 지정하는 필드는 list_display에도 있어야 한다. list_filter 오른쪽 사이드바에 필터를 활성화하고, 어떤 컬럼값으로 필터링할지 ..
원래 쓰던 테이블에 필드가 하나 더 있는 것이 좋을 것 같아서 필드를 추가하고, 들어온 값의 일부를 사용해서 해당 필드를 채우도록 save를 다음과 같이 오버라이딩했다. def save(self, *args, **kwargs): if not self.extension: self.extension = str(self.file).split(".")[-1] super(File, self).save(*args, *kwargs) 그리고 어드민에서 잘 동작하는 것 같아서 그냥 두고 잊어버리고 있었다. (사실 테스트코드만 있었어도 해결가능하지만......ㅎ) 그러던 와중 앱 테스트 도중에 파일 업로드가 안된다는 얘기를 들었다. 에러 메세지는 다음과 같다. ValueError: Cannot force both inse..
에듀캐스트에서 이진석님의 강좌 '리액트와 함께 장고 시작하기 Complete'를 다 들었는데 막상 정리를 안 해놔서 강좌 내용을 바탕으로 장고 이론을 정리해보기로 했다. ORM이란? Object-Relational-Mapper의 약자로 프로그래밍언어의 OOP 스타일로 쿼리를 작성할 수 있게 해주는 것. 장: 어떤 디비를 사용하든지 이미 잘 알고있는 언어를 사용해 디비를 조작할 수 있으므로 매우 편리하다. 단: ORM을 사용함으로서 오버헤드가 발생하며, SQL을 통해 튜닝하는 것이 ORM을 통해서는 불가능할 경우가 많다. Django Models 장고 ORM은 RDB만 지원한다. (따라서 MongoDB 등의 NoSQL을 쓴다면 장고보다는 다른 파이썬 프레임워크를 쓰는 것이..) 상황에 따라 다르겠지만 되도..
웹사이트를 만들때 페이지마다 허용되는 유저가 같으면 곤란한 일이 많이 발생할 것이다. 예를 들어 관리자 페이지인데 일반 유저가 들어간다던가, 아니면 유료로만 이용이 가능한 페이지인데 로그인도 안한 유저가 사용한다던가 하는 경우 말이다. 이런 일을 방지하기 위해서 Django View 상에서 동작하기 전에 무조건 유저를 검사해주도록 하기 위해 장고 뷰의 기본 메서드중 dispatch와 데코레이터를 활용해보기로 했다. 우선 기본 뷰의 메서드 중에는 dispatch라는 녀석이 있다. 이 녀석이 뭐냐면 request와 기타 argument를 입력받고 HTTP Response를 리턴하는 놈인데, HTTP 메서드를 검사하고 해당 메서드와 일치하는 메서드로 연결을 해주는 녀석이다. GET은 get()으로, POST는..
- Total
- Today
- Yesterday
- 동남아
- 다시미분적분
- 해외여행
- 머신러닝파워드애플리케이션
- 싱가폴여행
- Singapore
- 싱가폴
- 한빛미디어
- udemy
- askcompany
- 개발자리뷰어
- SRE를위한시스템설계와구축
- SQL기초구문
- 파고다후기
- 싱가포르
- 유데미강의
- 나는리뷰어다2022
- 한빛출판사
- 나는리뷰어다
- django
- 파고다강남후기
- 아토믹코틀린
- 파고다갓생후기챌린지
- 리액트와함께장고시작하기
- BookDiscussion
- Docker
- Python
- 그래프QL인액션
- 길벗출판사
- 혼자공부하는얄팍한코딩지식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |