안녕하세요. IT 엘도라도 에 오신 것을 환영합니다.
글을 쓰는 것은 귀찮지만 다시 찾아보는 것은 더 귀찮습니다.
완전한 나만의 것으로 만들기 위해 지식을 차곡차곡 저장해 보아요.   포스팅 둘러보기 ▼

장고 (Django) (12)

[Django] CSRF 방지 메커니즘 (feat. CsrfViewMiddleware)

이 포스팅은 Django가 CSRF를 방지하는 기본적인 메커니즘에 대해 다룬다. 만약 CSRF가 무엇인지 모른다면 이 포스팅을 먼저 읽어보고 오기를 권장한다. 또한 '기본적인' 메커니즘이라고 말한 것에서 알 수 있듯이, 원한다면 CSRF 방지 메커니즘을 어느 정도는 커스터마이징 하는 것도 가능하다. 다만 여기서는 기본 설정에 대해서만 다룰 뿐이다. 여기서 설명할 내용을 먼저 한 장의 그림으로 요약하자면 다음과 같다. 이후의 설명은 해당 그림을 토대로 진행하도록 하겠다. 목차를 보는 느낌으로 먼저 한 번 쓰윽 살펴보기 바란다. 결론부터 얘기하자면, Django의 기본적인 CSRF 방지 메커니즘은 CSRF 토큰을 쿠키(세션이 아니라)에 저장하는 방식을 채택한다. 참고로 Django 공식 문서의 설명을 가져오..

장고 (Django) 2021.05.04

[Django] django-allauth 소셜 로그인 구현 원리 (OAuth 2.0 기반)

Django의 라이브러리 중 하나인 django-allauth는 여러 종류의 소셜 로그인을 구현해두었다. 카카오 로그인, 페이스북 로그인, 구글 로그인, 네이버 로그인 등 아주 많은 종류의 소셜 서비스와 편리하게 연동이 가능하도록 기능을 제공하고 있는 것이다. 이번 포스팅에서는 해당 라이브러리가 그러한 소셜 로그인을 어떠한 원리로 구현하고 있는지, 카카오 로그인을 예시로 한 번 살펴볼 것이다. 카카오 로그인을 예시로 설명하지만 대부분의 소셜 로그인은 그 구현 원리가 비슷하다는 점을 기억하기 바란다. ※ django-allauth의 소셜 로그인 구현 원리를 살펴보기에 앞서, 그 구현 원리의 바탕이라고 할 수 있는 OAuth 2.0의 개념을 완벽히 이해하는 것이 먼저이다. 해당 개념에 대한 설명은 이 포스팅..

장고 (Django) 2021.04.08

[Django] 쿠키 및 세션 다루기 (+ messages, request.user)

쿠키 및 세션에 대한 기본적인 개념은 이 포스팅을 참조하기 바란다. 여기서는 그러한 쿠키와 세션을 Django에서 어떤 식으로 다룰 수 있는지, 그리고 쿠키와 세션에 기반하여 제공하는 Django의 기본적인 기능 몇 가지를 살펴보도록 한다. 1. Django에서 쿠키 다루기 브라우저가 Request를 보낼 때 함께 보내는 쿠키의 값들은 장고에서 request.COOKIE 객체를 통해 접근 가능하다. 2. Django에서 세션 다루기 해당 브라우저와의 연결 상태를 기억하고 있는 세션 저장소(이하 세션)는 장고에서 request.session 객체를 통해 접근 가능하다. 이는 장고의 기본 미들웨어인 SessionMiddleware의 역할이다. 이 미들웨어는 클라이언트가 보내는 매 요청마다 request.se..

장고 (Django) 2020.07.07

[Django] REST framework - ④ Authentication & Permissions

본 포스팅은 아래 링크의 내용을 나름대로 정리한 글이다. https://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/ 4 - Authentication and permissions - Django REST framework Currently our API doesn't have any restrictions on who can edit or delete code snippets. We'd like to have some more advanced behavior in order to make sure that: Code snippets are always associated with a creator. Only authen..

장고 (Django) 2020.06.27

[Django] REST framework - ③ Class-based Views

본 포스팅은 아래 링크의 내용을 나름대로 정리한 글이다. https://www.django-rest-framework.org/tutorial/3-class-based-views/ 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..

장고 (Django) 2020.06.27

[Django] REST framework - ② Requests and Responses

본 포스팅은 아래 링크의 내용을 나름대로 정리한 글이다. https://www.django-rest-framework.org/tutorial/2-requests-and-responses/ 2 - Requests and responses - Django REST framework From this point we're going to really start covering the core of REST framework. Let's introduce a couple of essential building blocks. REST framework introduces a Request object that extends the regular HttpRequest, and provides more flexibl..

장고 (Django) 2020.06.26

[Django] REST framework - ① Serialization

본 포스팅은 아래 링크의 내용을 나름대로 정리한 글이다. https://www.django-rest-framework.org/tutorial/1-serialization/ 1 - Serialization - Django REST framework This tutorial will cover creating a simple pastebin code highlighting Web API. Along the way it will introduce the various components that make up REST framework, and give you a comprehensive understanding of how everything fits together. The tutorial is f www..

장고 (Django) 2020.06.26

[Django] REST API, Django REST framework (DRF)

1. REST API REST(REpresentational State Transfer) API란, HTTP 프로토콜을 통해 요청할 수 있는 API를 만들 때 프로그래머들이 널리 사용하는 형식 중 하나이다. 즉, REST API는 HTTP 기반 API의 한 형식을 의미할 뿐, 특정 기술이나 언어에 의존하는 개념이 아니다. HTTP 프로토콜을 통해 요청을 전송하기 위해서는 크게 두 가지가 필요하다. 하나는 요청하고자 하는 자원을 나타내는 URI(Uniform Resource Identifier), 나머지 하나는 그 자원을 대상으로 수행하고자 하는 동작을 나타내는 메소드(Method)이다. HTTP 요청의 대표적인 메소드로는 GET, POST, PUT, PATCH, DELETE 등이 있으며, 각각은 데이터의..

장고 (Django) 2020.06.26

[Django] 프로젝트 구조 설정 (앱, 템플릿, Static 파일 등)

이전 포스팅과 연결 : [Django] 개발 환경 세팅 : CentOS7 (VirtualBox + Vagrant), PyCharm 1. 장고 프로젝트 구조 장고 개발자마다 선호하는 프로젝트 구조가 다르겠지만, 필자는 다음과 같은 프로젝트 구조를 선호한다. 프로젝트 구조란 프로젝트 폴더 내에 필요한 파일들을 어떤 구조(위치)로 배치하느냐에 관한 문제이다. 그리고 만약 그 구조가 장고가 기본적으로 제공하는 구조와 다르다면 별도의 설정을 해줘야 한다(아래의 구조는 기본 구조와 다르다). 이번 포스팅은 그 설정 방법에 관해 설명한다. 프로젝트 폴더/ config/ apps/ {app_name_1}/ {app_name_2}/ {app_name_3}/ templates/ static/ css/ font/ img/ ..

장고 (Django) 2020.06.01

[Django] 개발 환경 세팅 : CentOS7 (VirtualBox + Vagrant), PyCharm

1. CentOS7 가상 머신 설치 가상 머신(Virtual Machine)이란 특정 OS의 컴퓨터 환경을 가상화한 것으로, 또 다른 OS의 컴퓨터 한 대가 더 있는 듯한 착각을 제공하는 가상화 기술이다. VirtualBox나 VMWare 등이 바로 특정 가상 머신을 구동하기 위한 소프트웨어들에 해당한다. 그리고 Vagrant는 그러한 가상 머신들을 쉽게 설치하고 관리할 수 있도록 도와주는 소프트웨어이다. Vagrant를 이용하면 이미 누군가가 만들어 놓은 특정 환경의 가상 머신들을 쉽게 가져다 설치할 수 있다. 이러한 것들 하나하나를 가상 머신 box라고 부르며, 각 가상 머신 box에는 특정 OS와 그 OS에서 필요한 각종 소프트웨어들이 이미 갖추어져 있다. 가상 머신 box는 공식적으로 제공되는 것..

장고 (Django) 2020.05.27