TIL/Django
-
TIL.70 auto_now VS auto_now_add 차이TIL/Django 2020. 12. 17. 13:18
Django의 ModelField 중 DateField , DateTimeField 필드의 옵션으로 사용되는 auto_now 와 auto_now_add의 차이에 대해 알아보자. 먼저 DateField 와 DateTimeField는 언제 사용하는지 알아보자. DB 에서 CURRENT_TIMESTAMP 로 생성되야하는 정보일때 해당 필드를 사용하는데 예를 들어 게시물을 작성한 시간, 리뷰를 작성한 시간, 작성한 게시물을 수정한 시간, 리뷰의 리뷰를 작성할때의 시간 등 DB에 Timesatamp로 생성되어 저장되어야 하는 정보의 column 값을 지정해줄때 위와 같은 필드를 사용한다. 보통 최초 생성 시간 (created_at) 과 수정 시간 (updated_at) 2가지를 모두 구성해주는것이 컨벤션이다. D..
-
TIL.69 FloatField 활용하기TIL/Django 2020. 12. 16. 21:18
장고를 이용해 데이터모델링을 구성할때 아래와 같은 평점은 어떻게 구현 할 수 있을까? 따라서 리뷰에서 평점 모델링을 구성한다고 했을 경우 아래의 예시와 같이 작성할 수 있다. import json from django.views import View class ReView(View): rate = models.IntegerField() class Meta: db_table = 'reviews' 평점은 대략 0.5 ~ 5.0까지의 실수! 로 표현되는게 일반적이다. 따라서 소수 첫번째자리 까리 표현할 수 있으며 여기서 IntegerField 사용은 어울리지 않다 아래와 같이 FloatField를 사용하며 Djanog의 validators 모듈을 사용하여 평점의 범위를 지정해 줄 수 있다. import jso..
-
TIL.68 __str__은 무엇일까TIL/Django 2020. 12. 15. 14:55
Django 모델링 공부시 거의 대부분 __str__ 메서드가 사용되는 것을 어렵지 않게 볼 수 있다. 그럼 __str__ 메서드를 왜 사용하는지 알아보자. __str__ 해당 클래스로 만들어진 인스턴트를 자체를 출력할 때, 문자열로 설명해주기 위한 메서드이다. Django의 models.py에서는 class가 admin 페이지에서 어떻게 출력되는지 정의해주는 역할이라 볼 수 있겠다. 아래와 같은 Question 클래스의 3가지 column이 있는 상황을 생각해보자 class Question(models.Model): subject = models.CharField(max_length=200) content = models.TextField() create_date = models.DateTimeFiel..
-
TIL.64 (Token)_AuthenticationTIL/Django 2020. 12. 11. 23:16
Westagram Project를 하며 회원가입, 로그인, 게시물, 댓글 등의 기능을 구현해보았다. 오늘은 로그인 당시 부여한 Access_token을 이용한 회원가입/로그인 인증 구현을 마쳐놓은 상태이다. 이제 인증을 마쳤으니, 발행한 토큰을 이용해 유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차(인가)를 구현해보자 먼저 인가를 구현하기 위한 방법으로 크게(?) 2가지가 있다고 생각한다. 1. Django REST Framework 에서 지원하는 Authorization 4가지를 이용하는 방법 www.django-rest-framework.org/api-guide/authentication/ Authentication - Django REST framework ww..
-
TIL.58 Django Rest Framework_serializer(직렬화)TIL/Django 2020. 12. 6. 23:43
클라이언트의 Request(요청)에 대한 Response(응답)을 백엔드서버에서 보내줘야한다. 이러한 Http 통신은 이전에는 XML(Extensible Markup Language) 형식을 사용하였었다. 하지만 XML은 장황하고 복잡하였으며, 많은 태그들과 문자량이 늘어나 응답시간이 느린 무거운 방식이었다. 이에 대안으로 JSON(Javascript Object Notation)이 등장하였으며, 현재는 대부분 JSON 형식을 사용하고 있으며 http 통신은 JSON 형태로 이루어지고 있다. 따라서 클라이언트 Tool(Httpie) 또한 JSON 형식으로 데이터를 주고 받는다. 자 그럼 본격적인 Serializer 란 무엇일까? Serializer라는 DJango Rest Framework에서 나온 새로..
-
TIL.57 null=True 와 blank=True 의 차이(Django)TIL/Django 2020. 12. 5. 15:26
Django에서 Model을 구성할때 null=True 와 blank=True 의 차이는 뭘까? null 과 blank 는 둘 다 기본값이 False 입니다. 이 두 설정은 모두 필드(열) 수준에서 동작합니다. 즉, 필드(열)를 비워두는 것을 허용할 것인지를 설정합니다. null=True 는 필드의 값이 NULL(정보 없음)로 저장되는 것을 허용합니다. 결국 데이터베이스 열에 관한 설정입니다. date = models.DateTimeField(null=True) blank=True 는 필드가 폼(입력 양식)에서 빈 채로 저장되는 것을 허용합니다. 장고 관리자(admin) 및 직접 정의한 폼에도 반영됩니다. title = models.CharField(blank=True) # 폼에서 비워둘 수 있음. 데이..
-
TIL.54 Httpie를 이용해 통신해보기(Django, MySQL)TIL/Django 2020. 12. 2. 19:25
Django_CRUD_2 이전 CRUD_1에서는 모델과 데이터베이스간에 다뤘던 Django QuerySetAPI를 사용하고 연습해봄으로써 손에 익히기 위한 공부였다면 CRUD_2에서는 위에서 배운 내용1의 기본기를 통해서 실제로 클라이언트 통신을 보내 정상적으로 통신이 이루어지는 과정에 대한 이해이다. 클라이언트 Tool로서는 더 개발자스러운(?) Httpie를 이용하도록 하자. 다시 한번 HTTP 를 이용한 통신이 이루어지는 과정 세션이 끝나면 간단한 백엔드 API를 만들 수 있다고 볼 수 있다. 클라이언트에서 서버로 요청이 들어오면 가장 먼저 URLconf 로 들어가서 들어온 URL이 우리 서버에서 처리할 수 있는 URL인지 하나하나 따져본뒤 이상이 없다면 뷰로 그 처리를 위임하고 뷰에서 요청에 대해..
-
TIL.51 API 란?TIL/Django 2020. 11. 29. 23:27
API의 사전적 정의 “API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.”(위키디피아) API는 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법을 의미한다고 볼 수 있다. 어떤 사이트에서 특정 데이터를 공유 할 경우 어떤 방식으로 특정 데이터의 정보를 요청해야 하는지, 어떤 데이터를 제공 받을 수 있을지에 대한 규격들을 API라고 부른다. 다시 한번 정리하자면, API는 응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어에게 제공하는 인터페이스(규격)을 의미한다. 기상청의 공공 API로 예를 들어보..