Django 10

[DjangoRestFramework] JWT 인증

우리 Dsearch 제품 개발 중 로그인과 세션관리에 대해서 상의를 하던 도중, JWT 인증을 채택하자는 의견이 나왔다. 그래서 JWT에 대해 공부를 하게되었는데, 그 내용에 대해서 리뷰를 하고자 한다. 1. JWT 인증이란? : Json Web Token의 약어로, payload json데이터를 HMAC SHA 256 알고리즘을 이용하여 암호화 한 후, 토큰 방식 저장한다. 또, 이 토큰이 올바른 토큰인지, 기한이 만료된 토큰인지를 확인하기 위해서 jwt.decode 함수를 통하여 복호화 한다. JWT는 다른 세션관리 방식에서 사용하는 DB를 사용하지 않으므로, 빠르고 가볍다. 프로세스는 다음과 같다. 정방향 : 로그인 --> payload에 로그인 정보가 담김 --> jwt.encoding으로 암호화..

Django 2023.11.28

REST API, (GET,PUT,POST,DELETE)의 정리

GET은 보통 조회를 할 때 사용한다. DB로 생각했을때는 SELECT에 해당 예를들어, 회원가입한 사용자의 정보를 알고 싶다면, 아래처럼 사용한다. GET http://localhost:8080/rest/api/v1/user/1 2.2. POST Method POST는 보통 데이터를 추가할 때 사용한다. DB로 생각했을때는 INSERT에 해당 회원 가입을 하는 경우, POST 방식으로 사용자의 정보를 함께 전송한다. POST http://localhost:8080/rest/api/v1/user { "username": "아무개", "password": "1234", "email": "test@google.com", ... } 2.3. PUT Method PUT은 데이터를 수정 할 때 사용한다. DB로 ..

Django 2023.08.30

Django 가장 중요한 부분 (onChange 함수)

onChnage 함수의 발생 시점은 조회 버튼을 누른 후, 페이지를 넘겼을 때부터이다. antd 라이브러리의 Table 컴포넌트의 sorter 기능을 통해서 기본적으로 정렬 값을 setting 해주었기 때문에 조회 버튼을 누른 시점에서는 onChange 함수가 동작하는 조건이 아니게 된다. 그러므로 우리가 setSort (sorter.field? sorter.order === "ascend"? "-cruzlink." + sorter.field + ".keyword": "cruzlink."+sorter.field+".keyword":"cruzlink.TRN_GID.keyword") setFilter(''); fetch({ pagination, filter, sort }); 조회 버튼을 눌렀을 때는 onCh..

Django 2023.08.21

react 1일차

로컬에서 개발함 npm : node package manager yarn : npm과 역할 동일 (편함) react 설치 명령어 : yarn create react-app nospoon 그럼 디렉토리에 nospoon 디렉토리가 또 생김 --> yarn start OOP (객체지향 프로그래밍) Componet : UI를 객체화 *yarn add react-router-dom : URL 네비게이팅 해주는 패키지 *yarn add axios : react가 Django API를 호출하는 패키지 *yarn add antd : react의 UI 라이브러리 code . --> vscode에서 디렉토리 확인 다 설치하기 index.html-->index.js-->App.js 그럼 파일럿 프로젝트 만들기 1. antd..

Django 2023.08.17

장고 스터디 확장 (WSGI)

WSGI (web server gateway interface)에 대하여 : 장고의 내장서버 장고의 내장 서버는 이번 장에서 설명할 웹 서버와 WSGI 서버의 기능을 모두 포함하고 있다. 다만 내장 서버는 기능이 단순하고 '대량 요청'이나 '동시 요청'을 효율적으로 처리하지 못하므로 운영 환경에는 적합하지 않다. 이 방식은 python mange.py runserver 명령어를 통해 실행했다. 먼저 정적 페이지, 동적페이지에 대해서 알아보자. 정적(static) 페이지 웹 브라우저로 다음 URL을 요청해 보자. (여러분의 고정IP를 사용하자.) http://3.37.58.70:8000/static/bootstrap.min.css 그러면 웹 브라우저 화면에 다음과 같은 내용이 그대로 출력될 것이다. @ch..

Django 2023.08.16

장고 복습

하층부 1. Cruz Link에서 Log파일을 Filebeat로 전송한다. 2. Filebeat의 데이터 정보를 Elasticsearch로 전송한다. 3. Elasticsearch의 데이터를 kibana와 통신하여, 데이터의 변화를 실시간으로 관찰하며 4. 프론트에서 요청해온 Elasticsearch의 데이터를 Django Backend 서버를 통해 전달하는데 5. 데이터 전달을 위해 Django Backend에서 Elasticsearch DSL API 요청을 한다 . 6. Django의 API 요청 과정은 제일 상층부부터 이루어진다. 상층부 1. Client쪽에서 URL Request를 보낸다. 우리는 아마 홈페이지의 조회 창에서 특정 날짜, 조건 등을 변수로 담고 request를 특정 URL로 보낼 ..

Django 2023.08.14

Django 교육 3일차

Django란 무엇인가? API 호출 단위 (Object)와 Relation Table을 서로 맵핑해주는 웹 프로그래밍 프레임워크이다. (ORM이다.) 전체적인 프로젝트 진행 방식 더보기 기본적인 구조 api(1)를 호출 할 때와 web page(2) 를 호출 할 때, return 이 각각 다르다 . (1) : template 리턴해준다. (2) : data를 리턴해준다 . nospoons.urls.py --> api.urls.py (url 패턴을 매치함) --> view.py 에서 함수 호출한다. --> models.py 파일에서 데이터 테이블을 만든다. models.py에서 오브젝트에 대한 db테이블을 생성한다. *models.py의 역할은? : 각 앱에 대한 데이터베이스 스키마를 정의한다. pyth..

Django 2023.08.09

Django 교육 2일차

Filebeat 데이터 수집 후 kibana에서 확인 + kibana를 이용한 ingest pipeline 설정 (@timestamp 필드 reformat --> 요건 painless script로 수정, 그리고 message 필드 데이터를 여러개의 필드로 분할) + pip3 -Version으로 가상환경 설치 및 Django 설치 **중요 Django를 사용할 디렉토리는 home/가상환경 디렉토리이다. 아래는 프로젝트명/settings.py 파일 코드 (설정을 몇 가지 건드려줘야한다.) """ Django settings for nospoon project. Generated by 'django-admin startproject' using Django 4.2.4. For more information ..

Django 2023.08.08

Django 교육 1일차

Pilot Project : CruzLink 솔루션 거래전문 로그를 수집하고 조회하는 화면 구현 log file -> file beat -> elasticsearch (kibana) -> Django->React elastic search terminal 설치 과정 설명 (본인 랩탑에는 putty로 설치) 1.ssh 서버 로그인 (아이피 접속) 2. elastic search 공식 홈페이지 가이드 https://www.elastic.co/guide/en/elasticsearch/reference/current/targz.html 접속후 쉡 스크립트 작성 1. client와의 통신은 40530 (http 서버) 포트를 이용한다. 2. 노드 내부 통신 (읽기, 쓰기, replica복제 등등) 은 transp..

Django 2023.08.07