이 글에서는 JSON 형식의 데이터를 Django 모델로 가져오는 방법을 살펴봅니다. django-import-export 라이브러리를 활용하면 JSON뿐만 아니라 CSV, XLSX, YML 등 다양한 형식의 데이터도 손쉽게 모델에 가져오거나 내보낼 수 있습니다.
사전 준비
먼저 Django 프로젝트와 앱을 생성하고, URL을 설정하는 등 기본적인 환경 구성을 마칩니다. 이때 생성한 앱을 INSTALLED_APPS에 반드시 추가해야 합니다.
이번 예제에서는 views.py, urls.py, HTML 템플릿 파일은 다루지 않습니다. 오직 settings.py, admin.py, models.py, 그리고 관리자(admin) URL만 사용하면 됩니다.
django-import-export 설치하기
다음 명령어로 django-import-export 패키지를 설치합니다:
pip install django-import-export
settings.py에 아래 코드를 추가하여 import_export를 프로젝트 앱으로 등록합니다:
INSTALLED_APPS += ['import_export']
이렇게 하면 import_export가 프로젝트의 앱으로 추가되어 데이터 가져오기·내보내기 기능을 사용할 수 있게 됩니다.
모델 생성하기
테스트용으로 간단한 학생 데이터 모델을 만들어 보겠습니다:
class StudentData(models.Model):
name = models.CharField(max_length=100)
standard = models.CharField(max_length=100)
section = models.CharField(max_length=100)
위 모델은 실습과 검증을 위해 만든 것입니다.
admin.py 설정하기
from django.contrib import admin
from .models import StudentData
from import_export import resources
from import_export.admin import ImportExportModelAdmin
class StudentResource(resources.ModelResource):
class Meta:
model = StudentData
class StudentAdmin(ImportExportModelAdmin):
resource_class = StudentResource
admin.site.register(StudentData, StudentAdmin)
여기서는 데이터 가져오기(import)와 내보내기(export)를 위한 모델 리소스(ModelResource)를 정의하고, 이를 활용하는 어드민 클래스를 만든 뒤 모델과 함께 등록했습니다. 이렇게 설정하면 Django 관리자 페이지에서 별도의 코드 없이 바로 데이터를 가져오거나 내보낼 수 있습니다.
JSON 파일 형식
가져올 JSON 파일은 아래와 같은 구조여야 합니다. 모델 필드 이름을 키(key)로, 해당 값을 값(value)으로 작성하면 됩니다:
[
{
"id": 13,
"name": "John",
"standard": "10",
"section": "B",
"the_json": {"name": "Jhon"}
}
]
메모장(Notepad) 등의 텍스트 편집기로 위 내용을 작성한 뒤, import_example.json이라는 이름으로 저장합니다.
실행 결과
Django 관리자 페이지에서 import_example.json 파일을 업로드하면, JSON 데이터가 자동으로 Django 모델에 저장됩니다. 관리자 화면의 '가져오기(Import)' 버튼을 클릭해 파일을 선택하고, 미리보기 결과를 확인한 후 제출하면 됩니다. 이후에는 CSV나 Excel 파일로 동일한 방식을 적용할 수도 있습니다.