Server/django 25

[Django] Authentication & Permission

운영 원리 : Authentication & Permission 제 3자를 비롯한 모든 사용자에게 동일한 권한을 주는 경우는 극히 드물다. Authentication 서비스를 이용하는 데에 있어 내가 어느 정도의 권한이 있음을 알려주는(요청하는) 과정 Authentication - Django REST framework www.django-rest-framework.org BasicAuthentication HTTP 자체 기본인증에 기반한 인증방식 HTTP 제어 헤더로 넘긴 ID, PW를 base64 encoding TokenAuthentication BasicAuthentication은 보안에 취약하다는 단점 SessionAuthentication은 외부 서비스에서 사용할 수 없다는 단점을 가진 한계로..

Server/django 2020.05.29

[Django] Pagination

API 서버 상의 페이지네이션 API 서버의 페이지네이션의 의의 : 하나의 request만으로 처리하기 어려운 레코드들을 여러 request로 나누어 전송하기 DRF의 페이지네이션 구현 ( DRF 제공 클래스 ) 1. PageNumberPagination 2. LimitOffsetPagination 3. CursorPagination 4. Customized Pagination 일반적으로 PageNumberPagination을 디폴트로 설정하고, 추가적인 Page 설정이 필요한 부분만 Customizing 시킨다. PageNumberPagination generics.py GenericAPIView의 pagination_class에 디폴트 페이지네이션을 설정하도록 했는데, 이는 api_settings에서..

Server/django 2020.05.25

[Django] View of DRF ( Django Rest Framework )

CBV 3 - Class based views - Django REST framework We can also write our API views using class-based views, rather than function based views. As we'll see this is a powerful pattern that allows us to reuse common functionality, and helps us keep our code DRY. We'll start by rewriting the root view as a cla www.django-rest-framework.org class (APIView): def : 그 HTTP Method로 어떻게 처리할지는 직접 정의하기 views..

Server/django 2020.05.04

[Django] JSON 직렬화 - Serializer

(Model)Form vs (Model)Serializer Django Djnago Rest Framework Form/ModelForm Serializer/ModelSerializer Model로부터 Field 읽어옴 유효성 검사 HTML Form 생성 JSON 문자열 생성 django와 django rest framework 설치 $ pip install django $ pip install djangorestframework settings.py # INSTALLED_APPS에 등록 'rest_framework' models.py from django.db import models # Create your models here. class Post(models.Model): title = model..

Server/django 2020.04.28

[Django] REST Architecture

REST(REpresentational State Transfer) : HTTP를 이용해 통신하는 네트워크상에서 정한 약속 : 인터넷, 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 설계 형식 : 자원을 대표하는 단어 or 식별자로 자원의 상태를 전송하는 방법 *자원 : 인터넷에서 제공하고 얻을 수 있는 모든 것 : 자원을 이름으로 구분하여 상태를 전송하는 방법 REST가 필요한 이유? 웹의 독립적인 운용과 발전의 측면 1. 하위 호환(기존의 약속들)을 깨뜨리지 않고 독립적 발전 REST 설계 조건 : REST가 되기 위한 필요충분조건 1. Server - Client 2. STATELESS 3. Cache 4. Uniform Interface 5. Layered System 6. Code-On-..

Server/django 2020.04.28

[Django] JSON, Http Request & Method, Httpie

JSON(JavaScript Object Notation) 데이터의 송수신을 자바스크립트의 객체로서 수행할 수 있게 하는 가벼운 문자열 데이터 표현식 django REST framework API 서버는 데이터만 주고받는다. 스타일이나 로직 없이 JSON 데이터로서 표현된 요청과 응답 결과를 담은 의사만 전달한다. cf. XML(Extensible Markup Language) 데이터 표현식 중 하나 장점 : JSON에 비해 다양한 데이터를 나타낼 수 있지만 단점 : 데이터의 크기가 너무 크다. 그렇다면 자바스크립트 객체 그대로 보내면 안되나? 답은 안된다. 통신하는 대상, 즉 모든 수신자가 자바스크립트 객체 표현식을 아는건 아니다. 이런 고민을 해결해주기 위해서 자바스크립트 문법(객체)을 그대로 보내는..

Server/django 2020.04.23

[Django] CRUD

ORM (Object Relational Mapping) 정의하고자 하는 데이터를 클래스(객체)로 표현하는 것을 말한다. 객체로 관계형 DB를 다루기 때문에 SQL문을 사용하지 않고도 데이터베이스안에 원하는 데이터를 바로 적용 가능하다. 데이터를 다루는 네 가지 방법 CRUD import 부분 from django.shortcuts import render, redirect, get_object_or_404 from django.utils import timezone from .models import Blog from .form import NewBlog C ( Create ) def create(request): # 새로운 데이터(새로운 블로그 글)를 저장하는 역할 == POST if (request..

Server/django 2020.04.16

[Django] 장고 기초 - AWS 배포하기

1. AWS 과금 주의 2. AWS 계정 생성 (회원가입) 3. elastic beanstalk 명령어를 입력하기 위해서 awsebcli 설치 pip install awsebcli --upgrade --user .gitignore 생성 먼저 깃에 프로젝트를 올린다. 곧 beanstalk관련 된 파일들이 생기는데 이것들을 굳이 저장소에 올릴 필요가 없으니 gitignore파일을 수정 해준다. ### Django ### *.log *.pot *.pyc __pycache__/ local_settings.py db.sqlite3 media # Elastic Beanstalk Files .elasticbeanstalk/* !.elasticbeanstalk/*.cfg.yml !.elasticbeanstalk/*.g..

Server/django 2020.03.05

[Django] 장고 기초 - PostgreSQL DB연동

django 프로젝트를 생성하면 기본 DB로 sqlite가 생성되는데 이는 소규모 프로젝트에 적합하지만, 프로젝트의 규모가 커지고, 협업이 필요해지는 상황에서는 부족하기에 sqlite 대신 다른 데이터베이스와의 연동이 필요해진다. PostgreSQL 다른 DB 연결하기 1. 다른 DB 설치 https://www.postgresql.org/download/windows/ -> Download the installer PostgreSQL을 포함한 데이터베이스 자체가 서버다. 2. pgAdmin 4 실행 후 Databases > Create > Database 내용을 작성하고 Save를 누르면 새로운 데이터베이스가 생긴다. 3. django가 어떤 데이터베이스를 쓸 것인지 명시하는 부분은 settings.py..

Server/django 2020.03.05