AI 웹 개발 과정 92

DRF JWT 사용하기

JWT(Json Web Token) 사용자 인증을 위해 사용하는 암호화된 토큰인증 방식 토큰 인증 방식 사용자가 인증을 수행하면 서버에서는 사용자의 정보를 저장하지 않고 토큰값으로 브라우저에게 응답한다. 브라우저는 받은 토큰값으로 사용자만 사용할 수 있는 서비스를 요청할때 헤더에 함께 보내준다. 세션(Session) 방식과 비교하며 JWT 필요성 알기 세션 방식은 서버의 메모리, 데이터 베이스와 같은 서버의 자원들을 사용해서 사용자의 정보를 유지시키는 방식이다. 토큰방식 보다 보안에 강하다는 점이 있지만, 서버의 확장성이 떨어지고 서버의 자원(세션을 저장, 유지할 공간)이 많이 필요하게된다. 하지만 토큰 방식을 사용하면 서버에서 발행해주는 토큰을 가지고 브라우저의 저장소에 토큰을 유지시키고, 서버는 요청..

알고리즘 - 3주차 [버블 정렬, 선택 정렬, 삽입 정렬, 병합 정렬]

정렬 : 데이터를 순서대로 나열하는 방법 1. 버블 정렬 : 첫번째 자료부터 바로 다음번의 자료와 비교하여 작은 숫자를 앞에 배치하며 앞뒤 자료 두개씩 계속해서 마지막 자료까지 비교해 나간다. 그러면 맨 뒤 자리부터 큰숫자들이 정렬 되어진다. ex) input = [4, 6, 2, 9, 1] def bubble_sort(array): n = len(array) for i in range(n - 1): for j in range(n - i - 1): if array[j] > array[j + 1]: array[j], array[j + 1] = array[j + 1], array[j] return bubble_sort(input) print(input) # [1, 2, 4, 6, 9] ** Swap 두 변수..

알고리즘 - 2주차 Array / LinkedList

Array 와 LinkedList 경우 Array Linked List 특정 원소 조회 O(1) O(N) 중간에 삽입 삭제 O(N) O(1) 데이터 추가 데이터 추가 시 모든 공간이 다 차버렸다면 새로운 메모리 공간을 할당 받아야 한다. 모든 공간이 다 찼어도 맨 뒤의 노드만 동적으로 추가하면 된다. 정리 데이터에 접근하는 경우가 빈번하다면 Array 를 사용하는 것이 좋다. 삽입과 삭제가 빈번하다면 LinkedList 를 사용하는 것이 더 좋다. 파이썬의 list 는 array로 구현되어있다. 하지만 내부적으로 동적배열을 사용하여 배열의 길이가 늘어나도 O(1)의 시간 복잡도가 걸리도록 되어있다. 따라서 파이썬의 배열은 링크드 리스트로 쓸 수 도 있고, 배열로도 쓸 수 있다. Class 클래스 : 분류..

최종 프로젝트 - API 구현 (리뷰 리스트 조회, 리뷰 상세 조회)

1. 리뷰 리스트 조회 기능 구현 리뷰 리스트 페이지에서 사용자들이 올린 리뷰글을 최신순으로 간략하게 보여주는 것이 목적. API 문서를 꼭 참조할 것. review/views.py # 리뷰 기능 class ReviewView(APIView): permission_classes = [permissions.AllowAny] authentication_classes = [JWTAuthentication] # 리뷰 리스트 조회 def get(self, request): reviews = Review.objects.all().order_by('-id') reviews_serializer = ReviewSerializer(reviews, many=True).data return Response(reviews_se..

최종 프로젝트 - 모델링 / admin 작업

목차 1. ERD 설계 참조하여 review 앱에 models.py 작성 1) 모델 관계 2) on_delete 속성 3) DateField와 DateTimeField 속성 4) ImageField 2. review 모델 admin 페이지 커스텀 1) 어드민 페이지 설정 2) url로 저장된 이미지 필드를 이미지로 보여주기 3) search_fields 에서 관계된 모델 필드로 검색하기 4) def get_readonly_fields(self, request, obj): 사용했을때 5) Review 어드민 상세 페이지에서 ReviewImage 필드 넣기 1. ERD 설계 참조하여 review 앱에 models.py 작성 review/models.py # 리뷰 모델 class Review(models.Mo..

알고리즘 - 1주차

1. 최댓값 찾기 숫자들로 이루어진 배열이 있을 때, 이 배열에서 가장 큰 수를 반환해라. 방법1. 가장 큰 수를 저장할 변수를 만들고 for문으로 배열을 돌아가며 변수와 비교한다. if 값이 더 크다면 큰수변수에 대입 def find_max_num(array): max_num = array[0] for num in array: if num > max_num: max_num = num return max_num print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4])) print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6])) print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, ..

DRF 테스트 코드 작성하기 1

* 테스트 코드 작성한 코드들이 원하는 값을 내놓는지 확인하는 코드 TDD 테스트 주도 개발 unittest 유닛테스트 모듈 : 파이썬에 내장되어있는 테스트 라이브러리 APIRequestFactory 기본 테스트 코드 예시 from django.test import TestCase # Create your tests here. class TestView(TestCase): # def test_two_is_three(self): # self.assertEqual(2,3)# 결과 : AssertionError: 2 != 3 # FAILED (failures=1) def test_two_is_two(self): self.assertEqual(2,2)# 결과 : OK 생성한 어플리케이션 폴더에 tests.py ..

최종 프로젝트 - 기획

최종 프로젝트 배웠던 것을 복습해보며 사용자를 위한 웹 서비스를 직접 만들고 배포하여 피드백 및 개선사항 반영까지 진행 기간 2022.07.07-08.16 08/04 (목) : 프로젝트 1차 마무리 및 GIT & 시연 영상 녹화본 제출 & PPT 제출 08/05 (금) : 중간 발표회 08/05 (금) ~ 08/16 (화) : 배포 및 사용자 피드백 취합, 개선 사항 반영 08/16 (화) : 최종 발표 및 팀 별 회고 프로젝트 명 MLT - My Little Trip (여행 일정 추천받기) 사용자가 출발지와 여행지들을 입력하면 최단경로로 일정을 구성하여 시간과 주변 맛집들을 함께 알려주는 서비스 구현 기능 로그인/회원가입/마이페이지 회원가입 / 회원정보 수정 / 회원탈퇴 가능 로그인 / 로그아웃 기능 ..

Docker 실무 - 3주차

AWS를 사용해서 실제서비스 배포하기 1. AWS EC2 인스턴스 생성 Amazon Linux 2 AMI 선택 인스턴스 유형 선택 - t2.micro 보안그룹 규칙 추가 - HTTP 유형으로 포트 80번, 0.0.0.0/0 키페어 생성 2. AWS EC2 인스턴스 접속하기 PuTTy 사용 PuTTy 다운로드 링크 : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html Download PuTTY: latest release (0.77) This page contains download links for the latest released version of PuTTY. Currently this is 0.77, released on 2022-05..