본문 바로가기

Django/Django개념15

Django replica 적용기(RDS + Postgresql) Database 이용 시 Replica를 사용하는 이유 High availability(고가용성) : replica 중 하나가 다운되더라도 데이터베이스를 항상 사용할 수 있도록 복제본을 사용할 수 있습니다. 예를 들면 Django에서 사용할 때 어떤 쿼리가 데이터베이스를 길게 잡아먹어서 데이터베이스가 다운되어도 읽기전용 Replica가 살아 있으면 해당 데이터베이스로 대신 사용 가능해서 고가용성으로 사용할 수 있습니다. Load balancing(로드벨런싱) : replica를 사용하여 들어오는 요청의 로드를 여러 시스템에 분산하여 데이터베이스의 성능과 확장성을 향상 시킬 수 있습니다. 예를 들면 데이터베이스 한개에서 Read와 Write를 사용하는데 특정 API를 Read하는 전용 데이터베이스를 생성시.. 2023. 1. 8.
admin action custom 하기 마케터 분의 요청 기존에 생성한 미션 7개를 2번 더 복사해서 14개를 만들어 총 21개를 만들고싶다고 했습니다. 이렇게 해야 단순 반복 action을 줄이고 더 빠르게 action 할 수 있기 때문입니다. 서버 쪽에서 해결 할 수 있는 방법 Django Admin에서 어떤것을 제공하는지 찾아보다가 custom action을 이용하면 해결할 수 있습니다. admin에서 actions를 이용해서 해결 이제 이러한 문제를 해결하기 위해 공식문서에서 action부분을 확인했습니다. Admin Action(개념) Actions as ModelAdmin methods 다음 예시는 함수로 정의된 make_published action을 보여줍니다. 완벽하게 괜찮지만 코드 설계 관점에서 보면 완벽하지 않습니다. Ac.. 2023. 1. 3.
0x00 에러해결(A string literal cannot contain NUL (0x00) characters) 발생한 문제 데이터를 bulk_create or bulk_update해야하는데 데이터 사이에 0x00이 들어간 데이터 때문에 저장할때마다 에러가 발생했습니다. 에러 이름 A string literal cannot contain NUL (0x00) characters. 해당 데이터가 어떤식으로 들어오는지 로그를 조회하니 다음과 같은 데이터가 들어온 것을 확인할 수 있습니다. "달리는커피 시그니처\x00파스타, 두부가라아게 추가" 이렇게 \x00데이터 때문에 다음과 같은 에러가 나왔습니다.. 처음에는 그냥 string에서 제공하는 replace()로 해결하려고 replace(’\x00’, ‘’)로 처리했는데 변경한것 없이 그대로 "달리는커피 시그니처\x00파스타, 두부가라아게 추가" 이렇게 들어왔습니다. 그.. 2022. 12. 19.
Django multiple DB 문서정리 django multiple databases Multiple databases django는 여러개의 데이터베이스와 상호작용할 수 있습니다. 이것을 사용하기 위해서는 몇 가지 추가 단계를 수행해야 합니다. Defining your databases 맨 처음으로 해야할 일은 database를 한개 이상 사용한다고 서버에 알려줘야합니다. 이것은 database setting을 통해 작성할 수 있습니다. 이 설정은 Django 전체에서 특정 데이터베이스를 참조하는 방법인 데이터베이스 alias을 해당 connection에 대한 setting dictionary에 매핑합니다. 내부 dictionary의 설정은 DATABASE 설명서에 자세히 설명되어 있습니다. 데이터베이스는 선택한 alias를 가질 수 있습니.. 2022. 12. 19.
django transaction(장고 트랜잭션) 트랜잭션 트랜잭션이란 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위입니다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을수 있는 시스템을 의미합니다. 트랜잭션의 목적 사용자가 데이터베이스 완전성(integrity)유지를 확신하게 합니다. 데이터베이스 서버에 여러 개의 클라이언트가 동시에 액세스 하거나 응용프로그램이 갱신을 처리하는 과정에서 중단될 수 있는 경우 등 데이터 부정합을 방지하고자 할 때 사용합니다. 트랜잭션 예시 A라는 사람이 B라는 사람에게 1,000원을 지급하고 B가 그 돈을 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 돈을 지불했으나 B는 돈을 받지 못했다면 그 거래는 성립.. 2022. 8. 25.
마케터를 위한 CMS만들기 CMS를 만든 이유 처음에 장고로 모바일뷰를 마케터가 직접 조작하면서 웹을 생성할수 있는 페이지를 만들 수 있냐는 요구사항이 들어왔었습니다. 처음 들었을 때는 막막했는데 먼저 이런 페이지가 어떤 페이지인지 명칭이 뭔지 찾아봤는데 CMS라는 기술로 웹사이트 웹 저작물들을 발행할 때 매우 수월하게 도와주며 비슷한 규격인 페이지를 쉽게 만들 수 있게 도와주는 서비스입니다. Django로 만들 수 있는 CMS 서비스들의 특징들 Django CMS Django CMS는 “기한이 있는 완벽주의자를 위한” 웹 애플리케이션 프레임워크인 Django로 구축된 최신 웹 퍼블리싱 플랫폼입니다. Django CMS는 CMS에서 기대할 수 있는 일반적인 기능에 대한 기본 지원을 제공하지만 개발자가 쉽게 사용자 정의하고 확장하여.. 2021. 12. 31.