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 가 어떻게 출력되는 지 정의 내리는 함수.
      • 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
        Addresses 클래스에 4개의 column을 설정해주었다. 여기서 __str__의 역할은 admin 페이지에서 인스턴스 정보는 '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

BELATED ARTICLES

more