본문 바로가기

전체 글

(139)
플러거블 뷰(Pluggable View) 플러거블 뷰(Pluggable View) 플라스크는 기본적으로 데코레이터와 함수 기반으로 API를 작성하는데 이를 함수 기반 뷰라고 한다. 플러거블 뷰는 함수가 아닌 클래스를 기반으로한 Django 프레임워크의 Generic View에서 영향을 받은 것이다. from flask import Flask, render_template app=Flask(__name__) @app.route('/users/') def show_users(): users = User.query.all() return render_template('users.html', users=users) 위 코드는 일반적으로 Flask 에서 사용하는 함수 기반 뷰이다. 이제 이 코드를 플러거블 뷰로 바꾸어 보자 변형시키는 과정은 우선 Vie..
DRF : APIView / ViewSet / Router APIView APIView는 Class-base Views(CBV) 증 하나로 하나의 URL에 대해서만 처리를 할 수 있다. CVB로 작성 시 http 메소드에 해당하는 함수를 만들어 주어야 한다. 해당 함수 명은 지정되어 있으며, http 메소드 명과 동일하다. CVB에 대해 더 설명해 보자면 포스팅에 관한 URL을 예시로 설명을 할 수 있다. /post/ 에 대한 CBV get : 포스팅 목록 post : 새 포스팅 생성 /post// 에 대한 CBV get : pk 번호에 해당하는 포스팅 내용 put : pk 번호에 해당하는 포스팅 수정 delete : pk 번호에 해당하는 포스팅 삭제 각각의 요청 method에 맞게 함수를 새로 만들어 주어야 해당 method로 request가 들어오면 호출되게..
Ep07 : Flask로 첫 번째 HTTP API 구축하기 HTTP(Hypertext Transfer Protocol)란 무엇인가? HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 레이어 프로토콜로 클라이언트들이 어떻게 서버와 통신할 수 있는지를 정의한 것이기도 하다. 클라이언트와 서버에게 데이터를 요정(request)하면 서버는 요청에 맞는 응답(response)을 클라이언트에게 보내주는 방식이다. 여러가지 HTTP Verbs HTTP는 요청 메소드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. GET -> 특정 리소스릐 표시를 요청, 오직 데이털르 받기만 한다. POST -> 리소스를 생성/업데이트 하기 위해 서버에 데이터를 보내는데 사용된다. PUT -> 요청된 자원을 수정, 전체적인 정보를 수정할 때 쓰인다. PATCH ->..
Ep06 : 블로그 웹 애플리케이션 개발(3) - 댓글 CRUD, 게시물 삭제 처리, 간단한 contact form 구현하기 Superuser 생성하기 이제는 우리가 회원가입을 하면 기본적으로 is_staff의 기본값이 False로 저장이 된다. 이를 해결하기 위해서 스태프 권한을 가진 유저를 쉽게 만들 수 있도록 작업을 할 것이다. 우선 __init__.py에 아래의 코드를 추가해 준다. 그리고 터미널에서 flask create_superuser를 입력하면 스태프 권한이 있는 사용자를 만들 수 있다. 댓글 작성을 위한 HTML Form 작성하기 우선 post_detail.html에 아래 코드를 추가해 준다. {{ form.csrf_token }} Comment {% for comment in comments %} {{ comment.user }} {{ comment.content }} {% if current_user.use..
Django Rest Framework : Service Layer Service Layer 비즈니스 로직을 Service로 분리하고, 이런 비즈니스 로직들이 Class나 Function으로 이루어진 형태이다. 비즈니스 로직은 어떻게 데이터가 생성되고 저장되고 수정되는지를 정의한 것이라 할 수 있다. 이러한 비즈니스 로직을 View나 Model이 아닌 Service라는 곳으로 위치시킨걸 Service Layer라고 한다. Service Layer에 비즈니스 로직을 넣으면 생기는 이점 1. View, Model 등에서 비즈니스 로직을 분리해 각각의 위치에 맞는 역할을 할 수있게 한다. 2. 비즈니스 로직을 분리하는 거 자체에서 비즈니스를 좀 더 쉽게 이해할 수 있게 해준다. 3. 테스트 케이스 작성이 좀 더 용이해진다.
Django Rest Framework : Serializer Serializer serializer는 장고의 모델 데이터를 JSON 타입으로 바꿔주는 코드이다. 일반적으로 장고 모델 데이터를 템플릿에 뿌려주면 웹에 보이듯, JSON 타입으로 뿌려주면 api로 통신이 되는 것이며 내 데이터를 JSON 으로 바꿔주는 것이 serializer라 생각하면 된다. serializer 예시 출처 : https://devkor.tistory.com/entry/03-Django-Rest-Framework-Serializer-View-%EA%B0%9C%EB%85%90-%EC%9D%B5%ED%9E%88%EA%B8%B0 # test/models.py from django.db import models # 설명만을 위한 모델로, 상당히 대충 작성 되었습니다:) class Person(..
DTO, DAO, Entity Entity 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것, 개념, 장소, 사건 등을 가리킨다. 특징 : 유일한 식별자를 갖고 있어야 한다. ex) 주민번호, ID등 / 2개 이상의 인스턴스가 있어야 한다. / 반드시 속성을 하지고 있어야 한다 ex) 학생의 학번, 이름, 주소 / 다른 엔티티와 최소 한 개 이상 관계가 있어야 한다. ex) 학생을 이름을 가지고 있음 / 업무에서 관리되어야 하는 집합이다. ex) 학생, 성적 DTO(Data Transfer Object) 계층 간 데이터 교환을 하기 위해 사용하는 객체로, DTO는 로직을 가지지 않는 순순한 데이터 객체이다. 유저가 입력한 데이터를 DB에 넣는 과정 - 유저가 자신의 브라우저에 데이터를 입력하여 데이터를 DTO에 넣어서..
Django : 연결된 데이터 알아보기 Question 모델과 Answer 모델은 아래 사진처럼 서로 연결되어 있다. 그래서 만들어져 있는 Question 모델 데이터를 받아와서 Answer 모델 데이터를 만들면 된다. 서로 모델끼리 연결되어 있으므로 Answer 데이터에서 연결된 Question 데이터 조회도 가능하다. 다른 방식으로는 질문을 통해 답변을 찾을 수 있다. 처음에 q 에 넣어준 질문 데이터를 이용하여 연결된 답변 데이터 조회가 가능하다. 한개의 질문에는 여러개의 답변이 달릴 수 있지만 하나의 답변에는 하나의 질문만 연결되어 있기 때문에 a.question_set으로 조회하는 것은 불가능 하다. 모델끼리 서로 연결되어 있고, 하나의 모델 데이터의 여러개의 모델 데이터가 존재할 수 있으면 연결모델명_set 을 이용하여 조회가 가능..