Django 25

TIL_PortOne을 이용한 결제 시스템

결제 시스템 구현 목적 웹 사이트 기능 중, AI 채팅을 요청하거나 AI Reading 부분에서 문제 생성을 할 때마다 chatGPT 토큰을 사용하게 된다. 일정량의 토큰 이상을 사용했을 경우 요금이 부과가 되는 점을 고려하여 웹사이트의 자체적인 코인을 만들어 chatGPT 토큰을 남용할 수 없도록 기획하였다. 기본으로 제공되는 코인이 부족해진다면 상품 페이지에서 원하는 만큼 코인을 구매할 수 있다. 결제 시스템 관련 페이지 상품 선택 페이지 장바구니 페이지 결제 창 PortOne 온라인에서 상품을 판매하기 위해서는 결제 서비스가 필요하다. 수많은 은행, 신용카드 회사와 직접 문의하여 결제 수단을 연동하고 발생하는 모든 거래 내역에 대한 승인을 요청할 수도 있지만 매우 복잡한 과정이 될 것이다. 그래서 ..

TIL_WSGI(Web Server Gateway Interface)란?

Django project를 시작할 때, 'startproject'를 사용하여 프로젝트를 생성하고 나면 아래 그림처럼 'wsgi.py' 파일이 생성된 것을 볼 수 있다. 'wsgi.py'파일이 하는 역할은 무엇일까? WSGI(Web Server Gateway Interface)는 web application server이 web server(WS)와 통신하기 위한 interface이다. API와 비슷하게 web server와 web application server 사이에서 data를 주고 받기 위한 규약이다. client - Web Server(WS) - WSGI - Web Application Server(WAS)의 관계와 역할 client가 web browser을 통해 HTTP 방식으로 WS에 re..

TIL_Django, F expressions

팀 프로젝트 안에서, 게임의 힌트 버튼을 누르게 되면 누른 사람의 포인트가 약간 차감이 된다. 이 부분을 views.py에서 구현해 보았다. from django.db.models import F ... class HintView(APIView): permission_classes = [permissions.IsAuthenticated] def post(self,request,quiz_id): quiz = get_object_or_404(Quiz, pk=quiz_id) hint = quiz.hint user = request.user user.update(point=F("point")-constant.HINT_DEDUCTED_POINT) History.objects.create(user=user, act..

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

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

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을 ..

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..

TIL_Django Project, Default Password Validators

Django team project 중 내가 구현한 부분은 회원가입, 로그인, 로그아웃, 특정한 user의 feed만 모아보는 page이다. 이 중 회원가입 시에 password의 조건을 확인해 주는 기능을 django에서 어떻게 하는지 찾아보니 이런 기능을 'password validation'라고 하는 것을 알았다. Django는 기본적으로 settings.py에서 password validation 기능을 제공해 주고 있다. # settings.py AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contr..

LIST