오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Web Programming 53

[Django] 장고 migrations 명령어

마이그레이션은 어렵다.. 모델 사이의 관계나 필드의 속성을 바꿀 때 또는 local에서 배포 환경에서 매번 마이그레이션이 문제가 될 때가 꽤 있다. 이번 포스트에서는 마이그레이션과 관련된 명령어를 정리하겠다. 1. 마이그레이션 파일 생성하기 python manage.py makemigrations 2. 데이터 베이스에 마이그레이트하기 python manage.py migrate python manage.py migrate --settings=config.local.settings python manage.py migrate --settings=config.deploy.settings 3. 어떤 마이그레이션이 적용되었는지 확인하기 python manage.py showmigrations 4. 특정 앱의 마..

[Django] Template Tags and Filters (Filter 편)

장고는 매우 잘 갖추어진 프레임워크이다. 이미 구현되어있는 부분들이 많아서 개발자가 직접 구현하지 않고 그대로 사용하면 되는 부분들이 많다. 이러한 여러 기능들 중에 가장 유용한 기능을 하나 뽑으라면 난 Django Template을 꼽고 싶다. 오늘은 Django Template 중 Tag와 Filter에 대해 알아보도록 하겠다. 먼저 상대적으로 자유도가 낮은 filter를 다루고 이후에 Tag를 다루도록 하겠다. 1. Filter Filter는 template에서 Variable안에서 사용하는 툴로서 아래와 같이 사용한다. {{variable|filter}} variable과 적용하려는 filter를 "|" 로 구분해서 사용하면 variable에 해당 filter가 적용되서 웹페이지 상에 표현된다. ..

[Django] Trouble Shooting

1. The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS 한번에 보낼 수 있는 GET/POST 파라미터 개수가 셋팅해 놓은 값보다 많이 요청했음(default 1000개) config->settings.py 으로 가서 아래 변수를 선언해준다. DATA_UPLOAD_MAX_NUMBER_FIELDS = 4000 2. MultipleObjectsReturned at /main/ get() returned more than one Stations -- it returned more than 20! modelClass.objects.get(id=id)와 같은 방식으로 쿼리셋을 날렸을 때 반환되는 클래스가 여러개일때 발생..

[Django] Admin 등록 방법

Django에서는 admin 페이지를 개발자가 손쉽게 만들 수 있도록 제공해준다. 각 app 폴더마다 admin.py 파일이 있으며 admin.ModelAdmin 클래스를 상속받아 클래스를 상속시켜주면 관리자 페이지에서 해당 값들을 확인할 수 있다. from django.contrib import admin from . import models # Register your models here. @admin.register(models.Users) class UserAdmin(admin.ModelAdmin): list_display = ('username', 'name', 'areaId')

[Django] 프로젝트에 등록되어 있지 않은 파일에서 장고 사용하기

프로젝트에 startapps 명령어로 생성되지 않은 파일에서 장고에 등록된 모델이나 함수를 사용할 때 다음과 같은 에러가 발생한다. django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 이를 해결하기 위해선 환경을 장고에 맞춰주기 위해서 다음과 같은 코드를 from user.models import model 과 같은 파일 위쪽에 선언해..

[Django] 장고 비밀키 관리하기

종종 장고 secret키 관리가 어려울 때가 있다. github에 푸쉬할 때 settings.py 내부에 secret키가 있어 아래와 같은 경고 메일이 날라오기도 한다. Django Secret Key exposed on GitHub 아래의 글은 이를 해결하기 위한 방법을 정리해둔 글이다. 1. 동적 변수 할당 이거 나중에 작성할게요~ 2. django-dotenv 사용하기 django-dotenv는 일단 먼저 django-dotenv를 pip나 pipenv를 이용해 다운받아준다. pip install django-dotenv # 또는 pipenv install django-dotenv manage.py가 있는 디렉토리에 .env 파일을 만들어 준다. 그리고 .gitignore에 .env를 추가해준다.,..

[Django] 장고 쿼리셋 파헤치기(Eager Loading)

아래 내용은 김성렬님의 2020 Pycon-Korea Django ORM (QuerySet)구조와 원리 그리고 최적화전략을 정리해둔 내용입니다. https://www.youtube.com/watch?v=EZgLfDrUlrk 장고는 ORM(Object Relational Mapping)을 이용해 데이터를 관리한다. ORM은 데이터 베이스를 코드를 이용해 관리할 수 있도록 구현한 인터페이스로서 좀 더 쉽게 데이터베이스의 동작을 관리할 수 있도록 하는데 목적이 있다. 하지만 ORM은 편리함의 반대 급부로 성능상 손해를 본다. 이번 포스팅에서는 장고 ORM의 단점인 Lazy Loading 그리고 단점을 해결하기 위한 방법에 대해 알아보도록 하겠다. 1. ORM 단점: Lazy-loading(지연 로딩) 지연 로..