
Django에서 S3를 사용한 파일 업로드 기능을 구현해 보면서 작성자(본인) 기준이해하기 어려웠던 부분을 정리해보았다. AWS S3는 쉽게 말하면 클라우드 기반의 객체 스토리지 서비스다. 구글 드라이브처럼 파일을 저장하는(?) 서비스라고 보면 될 것 같다. 그리고 버킷은 객체(파일)들을 저장하고 관리하는 역할을 한다. (자세한 개념/원리에 대해 알고 싶다면 인파님 블로그를 보면 자세하게 설명되어 있어 좋다. 👍) S3 버킷을 만드는 과정은 다른 블로그 글을 참고하여 만들었다. 😊 📌 S3 버킷 만들기 (버킷 정책) 더보기 AWS에서 S3 클릭 버킷 만들기 클릭 버킷 이름 AWS 리전 선택 후 버킷 액세스 차단 설정을 해제 (default 값은 모두 차단)하고 버킷을 만든다. 만든 버킷의 권한을 누르고 ..
이전 포스팅에서 작성했던 방법은 선택 항목이 늘어날수록 코드를 재수정해야 한다는 점 때문에 이번 3차 프로젝트에는 코드 리팩터링을 하다 Q객체를 이용하여 query string을 좀 더 확장성 있게 구현해 보기로 했다. 처음 equipment list url로 들어왔을 때 등록된 모든 장비 항목이 보여야 된다. 그 후 선택(옵션) 값을 Query string으로 값을 받아서 필터링으로 값을 빼와서 결괏값을 다시 전달해주면 된다. 마찬가지로 list를 보는 페이지는 equipment/list로 끝나게끔 url 주소를 정의했다. # equipment/urls.py 파일 from django.urls import path from equipment.views import EquipmonetListView, E..

Django를 이용하여 REST API를 설계할 때 settings.py 에서 INSTALLED_APPS 하단에 MIDDLEWARE 부분 중 몇몇 기능을 비활성화 처리하는데 그 중 이 'django.middleware.csrf.CsrfViewMiddleware' 부분에 대해 알아보려고 한다. CSRF - Cross Site Request Forgeries 사이트 간 요청 위조(또는 크로스 사이트 요청 위조)는 웹사이트 취약점 공격의 하나로, 인증된(권한을 가진) 사용자가 자신의 의도와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록) 요청하게 하는 공격(해킹)을 말한다. 예를 들면 로그인과 같은 사이트에 인증된 사용자에게 해당 웹의 요청 중 하이퍼링크에 나쁜 코드를 심어 인증된 사용자에게 전송한다. 해..
2차 프로젝트를 진행하면서 사용해보지 않았던 query parameter(string)를 구현해봤기 때문에 잊기 전에 정리해본다. Query string 클라이언트가 웹사이트에서 입력한 데이터를 전달하는데 가장 널리 사용되는 방법이라고 한다. 가끔 웹사이트의 url주소가 매우 길 때 유심히 보면 물음표(?)로 시작하고 키=값&키=값으로 연결되어있는 부분이 query string이 적용된 부분이다. https://flights?depctycd=GMP&depctycd=CJU&arrctycd=CJU&arrctycd=GMP&depdt=2022-08-24 항공권 리스트 페이지의 경우 사용자로부터 입력받은 데이터를 받아와야 하기 때문에 urls.py의 url 주소는 ' ' 비어있게 설정해줬다. # flights/u..

초기 제품 모델링 매거진을 판매하는 웹 사이트를 선정하여 모델링 중 메인 카테고리와 서브카테고리를 나눴으나, 제품이 많지 않기 때문에 카테고리가 많지 않아도 될 것같다는 판단하에, 메인과 서브 카테고리를 나누지 않고 합치게되었다. 초기 모델링 -> 변경된 모델링 → 문제 발생 추후 기능구현 중 메인 카테고리에 대한 정보만 전달하고 싶은데 서브 카테고리 값도 불러오게되서 코드에 의미없는 슬라이싱이 추가되는 등 이상한 코드가 되어버렸다. related_name 활용한 모델링 → related_name 활용 many to many field 에서 역참조할때 _set 사용 대신 직접 이름을 지정하여 이 이름으로 역참조를 할 수 있게 만들어주는 related_name을 이런 경우에 사용할 수 있다는 멘토님의 조언..
path Variable GET method를 통해 데이터를 넘길 경우 경로를 변수로 사용한다. (특정 인덱스에 대한 조회) Django에서 제품의 상세페이지 url 주소를 path Variable를 활용하여 설정하는 방법을 정리해봤다. http://127.0.0.1:8000/products/1 제품의 상세페이지의 경우 제품의 id로 url 주소를 만들기 위해 products app의 urls.py와 models.py 코드를 수정 # products/urls.py 파일 from products.views import ProductDetailView urlpatterns = [ path('/', ProductDetailView.as_view()), ] # products views.py 파일 class P..

JWT? JWT(JSON Web Token)는 Json 포맷을 이용하여 Self-Contained 방식으로 사용자에 대한 정보를 저장하는 Claim 기반 Web 토큰으로 인가(Authorization)에 연관된 기술이다. 클라이언트의 요청(링크 클릭 etc..)이 들어올 때마다 서버는 요청을 한 사용자가 로그인, 인증과정을 거친 상태인지 확인해서 블로그 게시글 작성, 메일 확인, 댓글 확인과 같은 로그인이 필요한 기능들에 대해 허용을 해야 할지 응답해야 하는데, 매번 로그인을 하기에는 로그인 작업이 무거운 작업이기 때문에 로그인에 성공했을 때 토큰이라는 것을 전달한다. 이후 클라이언트의 요청이 들어올 때마다 로그인 대신 토큰을 확인하여 로그인 기록을 확인하여 응답을 한다. (설명이 틀렸을 수 있음..🥹)..
전 포스팅의 회원가입 구현과 회원 로그인 구현에서 사용자의 중요 정보(비밀번호)를 암호화하지 않았기 때문에 이번에는 bcrypy 라이브러리를 이용하여 어떤 방식으로 암호화를 하고 암호화한 사용자 정보를 어떻게 매칭 시켜 로그인이 되는지 과정을 정리해봤다. (이 포스팅에서 사용한 bcrypy 외에 장고 공식 문서에도 비밀번호를 어떤 방식으로 암호화하는지, 또 어떤 라이브러리가 있는지 확인 할 수 있다.) brcypy공식 문서에서 사용 방법을 보고 나름대로 이해한 것을 간략하게 정리했다. → bcrypy 설치 및 import → 클라이언트로부터 받은 정보 중 비밀번호를 데이터 테이블에 저장 시 암호화하여 저장 (회원가입) → 회원 로그인 시 입력 받은 비밀번호와 암호화하여 저장한 비밀번호를 encode하여 ..
회원 로그인 구현 이전에 작성한 회원가입 구현에 이어 간단한 회원 로그인을 구현해봤다. 먼저 회원 로그인 구현 시 중요한 점은 로그인 또한 사용자의 정보를 받는 것이기 때문에 보안이 필요하다. POST 방식은 GET방식과 다르게 URL에 붙여서 보내지 않고 HTTP BODY에 정보를 넣어 보내기 때문에 POST 방식으로 만들어야 한다. 또한, ★중요★ 사용자의 비밀번호는 암호화해서 db에 저장해야 하는데 이전 포스팅과 이 포스팅에는 적용하지 않았다. 암호화는 이후 공부하며 다시 재 포스팅하는 것으로 ^^... 그리고 마찬가지로 사전에 설치한 HTTPIE를 이용해 서버에 요청을 보내고 그에 따른 작업을 수행하고 요청에 맞는 응답을 보내도록 노력했다... models.py 모델링 조건 → 이름, 이메일, 비..
회원가입 구현 이전에 models.py에 클래스를 정의하여 데이터를 담을 수 있는 테이블을 만들었다면 HTTP통신을 통해 서버에 요청을 보내고 그 요청을 분석하여 처리할 수 있는 로직(View)을 실행시켜 데이터베이스와 통신하여 작업을 수행하고 요청에 맞는 응답을 보낼 수 있는 간단한 회원가입 API를 구현해보았다. HTTP를 통해 서버에 요청을 하면 전달하는 내용에 따라 내가 views.py에 정의한 오류들을 볼 수 있었고, 내가 정의하지 않은 오류가 발생할 경우 500 코드가 반환되는 것을... 볼 수 있었다.ㅠㅜ 아래 정의한 상태 코드 이 외 코드는 여기서 확인할 수 있다. models.py 모델링 조건 → 이름, 이메일, 비밀번호, 연락처 정보를 클라이언트에게서 받음 → 이메일 로그인 방식을 사용..
- Total
- Today
- Yesterday
- git
- 암호화
- Python
- 회원 로그인
- Magazine K
- 검색 결과 내 페이지네이션
- django
- API
- Spring
- 환경 변수 설정
- 회원가입
- authenticate()
- django.contrib.auth
- error: failed to push some refs to 'https://github.com/
- path variable
- 한글 형태소 분석기
- django-environ
- 커맨드 객체
- git공부
- 면접을 위한 CS 전공 지식 노트
- Django tutorial
- python3
- git 공부
- musma
- 톰캣
- 혼자 공부하는 파이썬
- Java
- 배열
- 웹페이지
- 디자인 패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |