Django

uuuu.jini·2022년 7월 21일
0

Django 

목록 보기
1/3
post-thumbnail

1:N 관계

역참조

역참조 참고

views.py

뷰(View)는 애플리케이션의 로직을 넣는 곳이다.뷰는 model에서 필요한 정보를 받아와 템플릿에 전달하는 역할을 한다.

템플릿 : 서로 다른 정보를 일정한 형태로 표시하기 위해 재사용 가능한 파일

urls.py

장고는 URLconf ( URL configuration ) 을 사용한다. URLconf는 장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합이다.

각 앱의 url들을 mapping하기 위해서는 메인 urls.pyinclude함수를 사용하여 포함 시켜 주어야 한다.

urlpatterns = [
	path('admin/',admin.site.urls),
    path('',include('앱.urls')),
]
  • 위와 같이 지정하거나 path경로를 지정하는 경우 해당 앱의 url로 mapping전의 url 이름을 지정할 수 있다.
path('api/',include('api.urls'))
  • 위의 api 앱의 urls.py의 모든 경로들은 api/ .. 형식으로 mapping이 된다.

models.py

verbose_name_plural 옵션

  • 사용자가 읽기 쉬운 모델 객체의 이름
  • 관리자 화면 등에서 표시되는 것은 동일하나 영어를 기준으로 복수형이다. ( 한국어에서 굳이 구별해 사용하지 않으므로 verbose_name과 동일하게 사용가능 )

DRF

Django RestFramework 는 Django 안에서 Restful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈 소스 라이브러리 이다. HTML로 렌더링하는 웹 서버가 아닌 JSON 혹은 XML과 같은 형식을 통해 데이터를 다루는 별도의 API 서버가 필요하다.

장점
1. 범용성이 좋은 웹 브라우저 API를 사용한 쉬운 개발
2. OAuth1,OAuth2 를 위한 추가적인 패키지가 인증 정책에 추가되어 있는 경우
3. DB data 를 Json으로 직렬화(Serialize) 기능
4. 다수 기업 사용 -> 커뮤니티 잘 됨

Serializer

serializer는 데이터를 직렬화 할 수 있게 도와준다. DB에 각종 데이터가 있다고 하면 해당 내용들을 JSON 혹은 Dict로 직렬화 할 수 있다.

파이썬 형식의 코드를 다른 네트워크 환경과의 통신을 위해 직렬화시 DRF에서 직렬화는 담당하는 클래스, queryset,model instance등의 복잡한 데이터를 python datatype으로 변환시켜 json,xml등의 컨텐츠 타입으로의 변환을 쉽게 만들어준다.

Serializer [ 직렬화 ]

python 객체나 django에서 queryset등 복잡한 객체들을 REST API 에서 사용 가능하게 json 형태로 변환해준다.

매개변수로 serializer할 모델을 받고 해당 모델을 직렬화하여 반환

from rest_framework import serializers

class CommentSerializer(serializers.Serializer):
	email = serializers.EmailField()
    content = serialziers.CharField(max_length=200)
    created = serializers.DateTimeField()
serializer = CommentSerializer(comment)
serializer.data
# {'email':'yoo@example.com','content':'foo bar','created':'2022-..' }

Core Arguments

  • default : 만약 세팅시, input 값이 없을 때 해당 default 값을 투입
  • source : populate 할 때 사용 되는 attribute name

IntegerField

IntegerField(max_value=None,min_value=None)

  • max_value = no greater than this value
  • min_value = no less than this value

Deserializer [ 역직렬화 ]

데이터를 request body로부터 받아서 다시 복잡한 데이터로 변환해주는 작업 , 직렬화된 데이터를 받는 측에서 사용하기 위해 다시 구조체로 만드는 과정.

ModelSerializer

serializer내의 클래스로, 이미 models.py에서 작성해둔 필드에 맞는 serializer를 만들 수 있도록 해주는 지름길과 같다. 각 모델 인스턴스를 model_to_dict 과정이 없이 쉽게 직렬화 할 수 있게 해주는 것이다.

Meta class 에 model에서 사용할 필드의 이름을 fileds로 지정해주면 따로 선언 없이 사용이 가능 ( mapping이나 메소드가 필요한 경우 따로 선언해 주기 )

custom field : 기본적으로 model에 등록된 필드 값들은 Meta 클래스에 추가해줌으로써 다뤄줄 수 있지만 커스텀 필드는 새로 정의한 후 field에 별도로 등록해주어야 serializer 조회 시 함께 return 해줄 수 있다.

APIView

APIView에는 CBV(Class-Based-View)와 FBV(Function-Based-View) 두가지 방법을 제공한다.

profile
멋쟁이 토마토

0개의 댓글