20210126 TIL(DRF, __str__ 메소드)
2022. 1. 26. 16:14
ㅇTIL
1.Django
- Django Rest Framework에 관한 튜토리얼을 2가지 진행했다.
- Serializer
- 직렬화를 위한 클래스. USER의 DB 안에 여러 필드가 존재한다고 가정하였을 때, 사용자 모델 인스턴스를 JSON 형태 또는 Dictonary 형태로 직렬화 할 수 있다.
-
# models.py from django.db import models class Addresses(models.Model): name = models.CharField(max_length=100) phone_number = models.IntegerField(max_length=12) email = models.EmailField(max_length=100) address = models.TextField() created_date = models.DateTimeField(auto_now_add=True) class Meta: ordering = ['created_date'] # serializers.py from rest_framework import serializers from addresses.models import Addresses class AddressSerializer(serializers.ModelSerializer): class Meta: model = Addresses fields = ['name','phone_number','email','address']
- 기존의 model을 설정한 이 후, serializer를 통해 데이터들을 JSON 형태로 반환할 수 있다. 이 때 URL은 /addresses/<user.id> 형태이며, View에는 user_id 에 속한 개별 인스턴스 정보가 리턴된다.
- 만약 /addresses/1(해당 개별 pk 값) 이라는 URL로 요청 시 , user_id는 1이라는 사용자 정보를 JSON의 형태로 반환받을 수 있다. 즉, 각각의 사용자 페이지 마다 인스턴스를 생성한 뒤, user_id 를 입력해주게 되면 각각의 인스턴스 정보를 확인할 수 있다.
- __str__()
- 클래스 타입인 인스턴스 자체를 출력할 때, 문자열로 실행하기 위한 메서드.
- admin 페이지에서 class 가 어떻게 출력되는 지 정의 내리는 함수.
-
Addresses 클래스에 4개의 column을 설정해주었다. 여기서 __str__의 역할은 admin 페이지에서 인스턴스 정보는 'name' 값으로 정의된다는 것을 확인할 수 있다.class Addresses(models.Model): name = models.CharField(max_length=10) phone_number = models.CharField(max_length=13) address = models.TextField() created = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name
name : cozzil2
'TIL' 카테고리의 다른 글
20220208 TIL(SpringMVC - HttpServlet,Http request Data) (0) | 2022.02.09 |
---|---|
20210203 TIL(Spring-AssertJ, HTTP) (0) | 2022.02.03 |
20210123~24 TIL(Django Restframework, Spring) (0) | 2022.01.24 |
20210119 TIL(Spring) (0) | 2022.01.19 |
20210118 TIL(spring-componant) (0) | 2022.01.18 |