Computer Programming 98

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에 접속하고 있는 동안 사용자 모르게 은행 웹사이트에 사용자의 권한으로 이체 요청을 보낸다. 은행 웹사이트는 이 요청이 사용자의 것으로 이해하고 요청을 받아들인다. 결국 사용자의 계좌에서 공격자의 계좌로 사용자 모르게 돈이 이체..

TIL_Django REST Framework, Cookie&Session와 Token의 차이점

로그인 인증 기능을 구현할 때 cookie, session, token에 대한 용어들이 등장한다. 전에 cookie와 session에 대한 내용을 정리한 적이 있는데, 이번에 token이 새로 등장하면서 개념들이 다시 헷갈리기 시작했다. 그래서 이들의 개념을 확실히 하기 위해 cookie, session, token에 대한 내용을 정리해 보았다. 웹사이트를 이용할 때 사용되는 HTTP(Hypertext Transfer Protocol)은 'stateless'라는 특징을 갖는다. stateless라는 것은 client에서 server로 요청이 갈 때마다 모두 독립적인 요청으로 다루어진다는 것이다. 따라서, server로 요청을 할 때마다 내가 누구인지를 매번 알려주어야 한다. server에게 내가 누구인지..

TIL_Dango Rest Framework(DRF)를 사용하는 이유

저번주까지는 Django의 VMT(View-Model-Template) model을 사용해서 웹페이지를 만들었다. 이번에는 Django Rest Framework(DRF)를 사용해서 웹페이지를 만드는 것을 배우고 있는데, 왜 VMT model을 놔두고 DRF를 사용하는 것일까? DRF가 가지고 있는 특징은 어떤 것이 있는지 찾아보았다. VMT model의 경우 Model => View =======( HTML 을 template 언어로 응답(render))=======> Template 기본 Django에서는 일반적으로 View에서 HTML 형태로 응답(render)한다. View에서는 database와 상호 작용하여 필요한 data를 가져오고, 이 data를 template에 전달한다. template..

TIL_Django REST Framework(DRF)

오늘부터 Django 심화과정 공부를 시작했다. 지금가지는 Django에서 MVT(Model-View-Template) model로 웹페이지를 만들었다면, 이제부터는 Django REST Framework라는 library를 이용해서 웹페이지를 제작할 예정이다. Django Rest Framework(DRF)이란? Django 안에서 RESTful API server를 쉽게 구축할 수 있도록 도와주는 open source library이다. RESTful API가 무엇일까? RESTful 하다는 것을 회사 채용 공고에서 자주 보았던 것 같은데, 이게 무슨 뜻인지 확실히 알기 위해서 우선 REST가 무엇인지 알아보았다. REST(Representational State Transfer)이란? Softwar..

WIL_여섯 번째 주

Facts Django team project를 제출하고 발표 시간을 가졌다. 우리 팀의 project 주제는 insta와 twitter를 섞어 놓은 것과 비슷한 간단한 일상 공유 서비스였다. Django 기초 프로젝트였기 때문에 기본적인 회원가입, 로그인, 로그아웃, CRUD를 활용한 feed와 comment 작성을 큰 틀로 하고 팔로우와 정렬 기능, 좋아요 등과 같은 추가적인 기능들을 넣었다. 코드는 github을 통해 공유하고 채팅과 화면 공유 등을 이용하여 팀원들과 의사소통을 나누었다. 프로젝트는 성공적으로 잘 마무리 되었다. Feelings 처음에 Django 기초 강의를 들었을 때 파일의 종류가 다양하고 홍길동처럼 이곳저곳을 돌아다녀야 했기 때문에 조금 헷갈리는 느낌이 있었다. 그런데 이번 팀..

LIST