0. 기초작업
- api_pjt 라는 이름의 프로젝트를 생성
- articles 앱을 생성하고 기본적인 url 구조를 만듦
- /api/v1/articles/로 들어오면 articles 앱의 urls로 연결
- articles 앱의 models.py를 작성
- Artcile 모델 클래스를 작성하고 아래 필드를 포함
- title
- content
- created_at
- updated_at
- Artcile 모델 클래스를 작성하고 아래 필드를 포함
조회를 하려면 데이터가 필요
Django Seed :→ 매번 create하는 것도 너무 힘들기에 자동으로 많이 생성해주는 라이브러리
- install
- pip install django-seed
- settings.py
INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", # Third-party "django_seed", # Local "articles", ]
- seeding: 더미데이터 생성
python manage.py seed articles --number=30
- ModuleNotFoundError: No module named 'psycopg2' 에러 발생시
pip install psycopg2
Serialization: 직렬화
- 객체 또는 데이터 구조를 저장, 전송을 위해 다른 포맷으로 변경하는 것
→ 데이터의 구조는 유지하면서 추후 재구성이 가능한 포맷으로 변환 - 현재 Python 객체 형태인 Queryset 혹은 Model의 Instance를 전송 가능한 형태로 직렬화를 통해 JSON, XML, YAML 등의 형태로 변환하는 것
- Django도 내부적으로 다른 데이터 포맷으로 쉽게 직렬화 할 수 있는 기능을 제공
Response 만들기
urls.py
from django.urls import path
from . import views
app_name = "articles"
urlpatterns = [
path("html/", views.article_list_html, name="article_list_html"),
path("json-01/", views.json_01, name="json_01"),
path("json-02/", views.json_02, name="json_02"),
]
views.py
from django.core import serializers
def json_02(request):
articles = Article.objects.all()
res_data = serializers.serialize("json", articles)
return HttpResponse(res_data, content_type="application/json")
✅ Django는 위와 같이 내부적으로 serializer를 제공하지만 모델 구조에 한정된 구조
- 직렬화된 데이터의 구조를 변경하거나 새로운 필드를 구성하는 것에 많은 추가 작업이 필요
- 유연한 API를 위한 기능이라기보다 모델 구조로 저장되어있는 데이터를 내보내는 용도에 가까움.
⇒ 모델에 종속적이지 않고 유연하지만 사용하기 편한 Serializer의 필요함.(다음 글에서....)
'Django' 카테고리의 다른 글
DRF CBV (0) | 2024.08.29 |
---|---|
DRF와 Postman (GET, PUT, DELETE, POST) (0) | 2024.08.29 |
장고 TemplateSyntaxError (0) | 2024.08.28 |
백엔드와 Django DRF, RESTful API (0) | 2024.08.23 |
Django Bootstrap, Fontawesome (0) | 2024.08.22 |