반응형

파이썬 python 25

[django] Django Admin 메뉴 순서 커스터마이징 – 공백 기반 정렬 방식

Django 프로젝트가 커지면 Admin 페이지에 등록된 모델 수가 많아지고, 이를 보기 좋게 정렬하고 싶은 상황이 생깁니다. 기본적으로 Django Admin은 모델 이름을 알파벳순으로 정렬하지만, 실제 사용 시에는 업무 플로우나 중요도에 따라 직접 메뉴 순서를 조정하고 싶은 경우가 많습니다. 이번 포스트에서는 verbose_name_plural의 앞쪽 공백 수를 활용해 원하는 정렬 순서를 만드는 방법과 함께, 이를 상수로 정리해서 관리하는 패턴을 소개합니다.🧩 문제 상황Django Admin은 모델 이름의 알파벳 순서로 메뉴를 정렬합니다.그런데 아래와 같은 모델들을 관리할 때는 업무에 따라 특정 모델을 위쪽에 배치하고 싶은 경우가 있습니다.🛠️ 해결 방법: 공백 수를 활용한 정렬 순서 제어모델 메..

[django] Django Admin Inline템플릿에 Custom Context 안전하게 전달하는 방법

— get_inline_instances()로 커스텀 컨텍스트(custom context) 주입하기Django Admin은 뛰어난 기능을 제공하지만, 종종 커스터마이징에는 제한이 따릅니다. 특히, Inline에 custom template을 적용하고, 여기에 개별 객체 정보를 포함한 동적 context를 전달하고 싶을 때 어려움이 있습니다. 이 글에서는 get_inline_instances()를 활용해 Django Admin Inline에 안전하게 custom context를 전달하는 가장 실용적인 방법을 소개합니다.🎯 목표Django Admin의 Inline에 custom template을 사용Inline 템플릿 내에서 동적 정보를 안전하게 활용🔥 핵심 전략Django는 Inline을 렌더링할 때 ..

[django] database is locked - 원인파악 | 해결방안

1. 원인 파악Django에서 "database is locked" 오류는 SQLite3 데이터베이스에 현재 다른 프로세스가 잠금을 걸고 있는 상태에서 데이터베이스 작업을 시도할 때 발생합니다. 이 문제는 여러 가지 이유로 발생할 수 있습니다:동시 접근: SQLite3 데이터베이스는 낮은 트래픽에서 중간 트래픽까지를 처리하도록 설계되었습니다. 높은 수준의 동시 쓰기는 데이터베이스가 잠기는 결과를 초래할 수 있습니다.장시간 실행되는 트랜잭션: 트랜잭션이 완료되는 데 오랜 시간이 걸리면, 데이터베이스에 잠금을 걸어 다른 트랜잭션이 진행되지 않게 할 수 있습니다.파일 잠금 문제: SQLite는 동시성을 관리하기 위해 파일 잠금을 사용합니다. 파일 시스템 잠금 메커니즘에 문제가 있으면 데이터베이스가 잠길 수 있..

[파이썬] 천 단위로 쉼표 표기하는 초간단 방법 : format, f-string 이용

파이썬으로 금액 데이터를 사용하다 보면 천 단위로 구분하기 위해 쉼표를 찍어야 할 때가 있다. 예를 들어 770000원 보다 770,000원 이 더 보기 편하고 사용자 편의성이 좋다. 이번 글에서는 이렇게 천 단위로 쉼표를 표시해주는 간단한 파이썬 코드를 공유한다. 1. format 이용# 금액을 천 단위로 쉼표를 찍어서 표시하는 함수def format_amount(amount): return "{:,}".format(amount)# 예시 금액amount = 770000formatted_amount = format_amount(amount)print(formatted_amount) # 출력: 770,000 2. f-string이용# 금액을 천 단위로 쉼표를 찍어서 표시하는 함수def format_..

파이썬 python 2024.10.08

[django] model object update 방법 정리

django에서는 모델 객체를 업데이트 하는 방법이 여러가지가 있다.쓸때마다 이거였지 생각은 나는데 정확하지 않아 계속 찾아보고 하는 과정이 반복되어이번 기회에 정리하고자 한다.django developer들에게 조금이나마 도움이 되길 바란다.  목차  Queryset.update()"django model update"를 검색했을 때 가장 많이 나오는 방법이다. 즉시 적용(applied instantly)obj.save() 필요 없음update()매서드를 호출하는 순간 데이터가 변경된다.save()보다 더 빠르다(Queryset의 특징인 laziness가 적용되지 않는다.) 외부 테이블의 필드는 수정 불가해당 테이블의 데이터필드만 수정 가능하고 외래키로 수정은 불가하다.>>> Entry.objects...

[django] django로 포트포워딩(port forwarding)하는 방법 (w. middleware)

django로 포트포워딩(port forwarding)하는 방법- Django 애플리케이션에서 클라이언트가 어떤 도메인을 통해 접근했는지를 확인하고, 해당 도메인에 따라 다른 페이지로 리다이렉션하는 방법  배포 관점에서 그려본 프로젝트의 전체적인 흐름이다. 처음에는 django admin페이지를 이용한 서비스를 구현했다.따라서 back과 front모두 django안에서 해결 할 수 있었다. 도메인을 하나 구입해서 Route53을 이용해서 호스팅을 했고,subdomain으로 first를 붙여 (예) first.webname.net으로 배포했었다. 탄력적 IP를 이용해서 내가 배포한 EC2에 고정적으로 접근할 수 있도록 설정해두었고,django 웹앱을 포트번호 8000번을 이용했다. 여기까지는 문제 없다. ..

[django] annotate에 관하여...

django annotate 매서드는 queryset에 내가 원하는 값으로 계산해서 기존 queryset에 추가해줄 수 있다. 그럼 원하는 값으로 계산한다는 건 어떤 말이냐?공식문서에서는 query expression이라고 표현하는데F매서드를 사용해도 되고, Aggregate Func을 사용해서 값을 나타내도 된다. annotate가 "주석을 단다"라는 뜻인데 django annotate는 "queryset에 주석을 달아주는데 주석의 값도 사용 가능"이라고 이해하면 될 듯 하다. (적어도 나에겐...) 아래는 공식문서에 나온 예시이다.from django.db.models import Countq = Blog.objects.annotate(Count("entry"))# The name of the fir..

[python] warning 제거

파이썬 warning 메세지 안보이게 하는 방법사용하는 라이브러리에서 버전에 따라서 warning메세지가 뜨는 경우가 많다.하나하나 확인해서 대응하면 좋겠지만, 그런 여유로움이 없는 분도 있다.(나같은...)터미널에 원하는 메세지만 보길 원하는데 warning메세지때문에 한눈에 안들어온다.아래 코드로 warning메세지를 제거할 수 있다.import warningswarnings.filterwarnings('ignore')

파이썬 python 2024.06.25

[django] django template에서 settings.py variable불러오는 방법

How to use settings.py variables in django template ? >>> Use custom_tag!개발을 하다 보면 로컬환경, 개발환경, 배포환경 등 여러가지 환경에서 테스트해야하는 상황이 생긴다.테스트 할때마다 각 환경에 맞는 환경설정 값을 바꾸는 건 굉장히 비효율적인 작업이고 작업 집중력도 떨어뜨리며 능률도 떨어지게 된다. 그래서 나 같은 경우는 secrets.json에 환경변수값들을 키값과 함께 저장해놓고 각 환경에서 secrets.json파일만 바꾸는 식으로 개발을 진행한다. 뭐가 되었든 각설하고 django template에서 환경에 따라 값을 다르게 넘겨줘야 하는 상황이 생기는데 이 때 settings.py에서 정의한 변수를 가져오게 된다면 문제가 간단하게 해결..