전체 글 102

TIL_Django REST Framework(DRF)의 serializers 사용 방법

DRF(Django REST Framework)에서 serializers를 사용하여 article을 불러오고 생성하는 방법에 대해 알아보자. 우선 urls.py에서 url을 지정해 준다. #urls.py from django.urls import path from articles import views urlpatterns = [ path('articles/', views.ArticleView.as_view(), name='article_view'), ] 그리고 views.py에서 ArticleView를 작성해 준다. #views.py from rest_framework.views import APIView from rest_framework import status from rest_framework...

TIL_Cookie/Session 방식과 Token 방식의 차이점

Django에서 Cookie와 Session 방식과, Token 방식의 차이점을 정리해 보았다.. Cookie Session Token 저장 위치 client 측에 저장, 사용자의 브라우저에 정보 저장 서버 측에 저장, 서버에 저장된 데이터는 일반적으로 메모리나 데이터베이스에 보관 client 측에 저장, 주로 웹 클라이언트의 로컬 스토리지나 쿠키, 모바일 앱의 메모리에 저장 데이터 유지 기간 만료 날짜/시간을 설정할 수 있고, 만료 기간이 지나면 삭제 세션 데이터는 일반적으로 사용자가 브라우저를 닫을 때까지 유지 보통 설정된 만료 시간까지 유효, 만료 시간이 지나면 더 이상 사용할 수 없음 보안 브라우저에 저장되어 보안에 취약할 수 있음, 민감한 정보를 저장하기에는 적합하지 않을 수 있음 서버에 저장되..

TIL_JWT(JSON Web Token)

로그인 인증 방식 중 하나인 JWT가 무엇인지 알아보자. JWT란? JSON Web Token 웹 어플리케이션 간에 정보를 안전하게 전달하기 위한 간단한 토큰 기반의 인증 방식 사용자가 로그인한 후에 발급 토큰은 사용자의 신원을 확인 토큰은 JSON 형식으로 인코딩되어 있고, 사용자의 정보와 함께 서명되어 있어 데이터의 무결성을 보장 사용자의 인증 및 권한 부여를 처리하는 데 매우 유용 웹 서비스와 모바일 앱 등에서 널리 사용 JWT의 구조 JWT는 Header, Payload, Signature 이렇게 세 부분으로 구성 1. Header(헤더) JWT의 header는 두 가지 정보를 가지고 있음 1) 이 토큰이 JWT임을 나타내는 "typ" 필드 2) 어떤 hashing 알고리즘을 사용해 시그니처를 생..

TIL_HTTP, HTTPS, SSH란?

AWS를 배우면서 HTTP, HTTPS, SSH라는 용어가 등장한다. 이들의 정확한 뜻과 차이점이 무엇인지 알아보자. HTTP Hypertext Transfer Protocol의 약자 인터넷을 통해 정보를 주고받는 데 사용되는 규칙 또는 프로토콜 웹 브라우저와 웹 서버 사이에서 문서, 이미지, 비디오 등의 리소스를 요청하고 전송하기 위해 사용됨 웹에서 데이터를 주고받는 방법을 정의한 것 웹 브라우저에서 웹 페이지를 열 때나 검색 엔진에서 웹 페이지를 색인 할 때 사용됨 사용자가 웹 주소를 입력 => 브라우저는 해당 웹 서버로 HTTP 요청을 보냄 => 서버는 요청된 웹 페이지를 HTTP 응답으로 다시 보내줌 이렇게 웹 페이지를 브라우징 할 수 있음 HTTPS Hypertext Transfer Protoc..

TIL_DRF에서 Meta class란?

Django project를 배우던 중, serializers.py에서 'Meta class'라는 것이 등장했다. 모양은 아래와 같이 class 안에 Meta class가 들어가 있다. 왜 class 안에 또 다른 class를 정의했을까? Meta class를 쓰는 이유에 대해 알아보았다. class ArticleSerializer(serializers.ModelSerializer): class Meta: model = Article fields = '__all__' Meta Class in Django Meta class는 django에서 model class (또는 serializer class) 안에서 정의되고, 해당 model (또는 serializer)에 대한 추가적인 data와 설정을 제어하는..

TIL_Django REST Framework Project, blog 만들기(1)

DRF를 이용하여 blog를 웹사이트를 만들려고 한다. 프로젝트 생성부터 user, article, comments, 좋아요 등의 기능 구현 모든 것을 정리해 보았다. Project 기본 Settings 바탕화면에 'drf_blog_project'라는 folder 생성 => Visual Studio Code켜서 해당 폴더 열기 => venv(가상환경) 생성: python -m venv venv => venv 켜기(Windows 경우): source venv/Scripts/activate => Django install: pip install django => Django REST Framework install: pip install djangorestframework => Simple JWT insta..

TIL_Django Basics, Migration

Django에서 model.py을 정의하면 이 내용을 Database에 적용시키는 과정에 Migration이 쓰인다. DB Schema를 생성하고 관리할 때, 마치 git처럼 버전을 나눠서 관리할 수 있게 해주는 시스템이다. (Schema: DB 내에서 data가 저장되는 구조와 제약 조건을 정의한 것. Django에서는 하나의 application의 models.py) Migration 관련 명령어 정리 1. python manage.py makemigrations Migration을 생성 을 입력하면 해당 app에 대해서만 migration 생성, 생략하면 전체에 대해 migration 생성 처음 migration 실행시에는 생략 2. python manage.py migrate Migration을 ..

WIL_일곱 번째 주

Facts Django REST Framework(DRF)에 대해서 배우기 시작했다. 전에는 일반 Django 였기 때문에, CRUD API를 작성할 때 response로 HTML file을 return 했다. DRF에 대해 배우기 시작하면서 부터는 DRF library를 사용하기 때문에 HTML file이 없이도 admin page나 POSTMAN 프로그램으로 API를 테스트 할 수 있었다. 이번에도 저번과 마찬가지로 Blog를 만들고, 상세페이지와 comments, 좋아요, 팔로우 등의 기능들을 구현하며 DRF를 연습했다. Feelings Django 기초가 익숙해졌는데, DRF를 배우며 view.py에서 많은 부분이 바뀌며 조금 어렵다는 느낌이 들었다. 아니, 어렵다기 보다는 생소한 기분이 좀 더 ..

TIL_Django REST Framwork, POSTMAN을 사용하는 이유

오늘 얘기할 내용은 POSTMAN 프로그램이다. Django를 이용해 blog를 만드는데, CRUD를 이용한 article 보기와 user 기능들을 테스트 할 때 주로 POSTMAN을 이용한다. 처음에 이 프로그램을 사용할 때, 이 프로그램이 뭔지, 왜 사용을 하는지 이해가 잘 가지 않았다. 그래서 오늘 POSTMAN이 어떤 프로그램인지, 사용하는 이유는 무엇인지에 대해 알아보려고 한다. POSTMAN은 어떤 프로그램인가? 주로 웹 개발자와 API 개발자가 사용하는 software 도구로, API(Application Programming Interface)를 테스트하고 관리하는 데 사용된다. 사용자가 쉽게 사용할 수 있도록 디자인 되었고, HTTP request를 API에 보내고 그에 대한 respon..

TIL_Django Basics, CSRF와 XSS

Django를 배우다 보니 가끔 CSRF와 cors 등 보안과 관련된 용어들이 등장한다. 오늘은 CSRF와 XSS에 대해서 알아보았다. CSRF(Cross Site Request Forgery) 공격자의 요청이 사용자의 요청(CRUD)인 것처럼 속이는 웹 해킹 기법 Server를 대상으로 한 공격 사용자의 권한으로 사용자는 모르게 웹 요청을 시도 예시) 사용자가 자주 이용하는 은행 웹사이트에 logged in 했다. 동시에 이상할 것이 없는 blog에 들어가 글을 읽는다. blog에 접속하고 있는 동안 사용자 모르게 은행 웹사이트에 사용자의 권한으로 이체 요청을 보낸다. 은행 웹사이트는 이 요청이 사용자의 것으로 이해하고 요청을 받아들인다. 결국 사용자의 계좌에서 공격자의 계좌로 사용자 모르게 돈이 이체..

LIST