Django를 이용하여 REST API를 설계할 때 settings.py 에서 INSTALLED_APPS 하단에 MIDDLEWARE 부분 중 몇몇 기능을 비활성화 처리하는데 그 중 이 'django.middleware.csrf.CsrfViewMiddleware' 부분에 대해 알아보려고 한다. CSRF - Cross Site Request Forgeries 사이트 간 요청 위조(또는 크로스 사이트 요청 위조)는 웹사이트 취약점 공격의 하나로, 인증된(권한을 가진) 사용자가 자신의 의도와 무관하게 공격자가 의도한 행위(수정, 삭제, 등록) 요청하게 하는 공격(해킹)을 말한다. 예를 들면 로그인과 같은 사이트에 인증된 사용자에게 해당 웹의 요청 중 하이퍼링크에 나쁜 코드를 심어 인증된 사용자에게 전송한다. 해..
3차 프로젝트를 하면서 새롭게 접하게 된 mqtt.. 사물인터넷 (Internet of Things)와 연관되어있다는...? 이게 무엇일까..🙄 정리해보았지만 역시 어려운 것 같다. 가볍게 읽고 나중에 깊게 공부하도록하자 Mqtt(Message Queue Telemetry Transport) TCP/IP 프로토콜 베이스로 설계된 가벼운 pub/sub 모델의 메시징 프로토콜로 사물인터넷 (loT)과 M2M(machine-to-machine)에서 사용하려고 만들어졌기 때문에 loT를 위해 낮은 전력과 낮은 대역폭 환경에서도 사용할 수 있도록 설계되었다. 저전력, 신뢰할 수 없는 네트워크, No TCP/IP 기반에서도 운용할 수 있다는 장점이 있어, 소형기기의 제어와 센서 정보수집에 유리하다고 한다. Mqtt..
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..
Myrealtrip 여행을 떠나기 위해 필요한 모든 서비스를 제공하는 국내 최대 여행 서비스 플랫폼 선정과정 프로젝트 선정 시 1차 프로젝트에 제외된 사이트들이 (1차에 비해 비교적 어려운 커머스 사이트들) 2차 프로젝트 용으로 미리 나눠져있었다. 마이 리얼 트립 말고도 에어비앤비, 제주 패스, 스테이 폴리오 등등 다양한 서비스를 같이 제공하는 사이트들도 있었다. Myhoneytrip 팀 1차 프로젝트와 마찬가지로 임의로 팀 구성원이 미리 결정되어있었고, 1차와는 다르게 규모가 큰 사이트다 보니 프런트 앤드 4명, 백앤드 3명으로, 총 7명으로 구성되었다. (PM은 myrealtrip 사이트 직접 선정했던 프론트앤드 분이 맞아주셨다 👍) 팀이름은 소비자에게 어떤 서비스를 제공할까 정하다 우리 팀은 연인들..
Magazine B는 공개적으로 제품에 대해 리뷰 또는 문의글 작성 기능이 없어 프론트팀과 상의하여 기능을 추가했다. Magazine K 리뷰 작성 기능 구현 → 각 제품별 상세 페이지 하단에 별점과 글을 작성할 수 있다. → 해당 제품을 구매하여 배송이완료된 회원만 해당 제품 페이지에 작성할 수 있어야 한다. → 구매를 안했을 경우 등록버튼을 누를 때 alert창이 뜨면서 오류를 알려준다 urls.py # reviews.urls.py 파일 urlpatterns = [ path('//reviews', ReviewView.as_view()), path('//reviews/', ReviewView.as_view()), ] 아래 주소와같이 지정한 url 주소에 product_id 값 (아래 url 예시에서는 ..
특정 브랜치에서 작업을 하다 다른 브랜치와 병합할 경우가 많은데, 이때 사용하는 명령어는 2가지가 있는데, 하나는 rebase이고 다른 하나는 merge 다. Rebase의 경우는 브랜치의 변경사항을 순서대로 다른 브랜치에 적용하면서 합치고 Merge의 경우는 두 브랜치의 최종 결과만을 가지고 합친다. Rebase를 하든지, Merge를 하든지 최종 결과물은 같고 커밋 히스토리만 다르다는 것이 중요하다. Merge C4와 C3로 나눠진 브랜치의 커밋 히스토리인데, 결국 메인(master) 브랜치와 작업 브랜치(experiment)가 C2로 병합되는데 가장 쉽게 사용하는 명령어가 merge 이다. merge는 각 브랜치에서 작업할 때 사용했던 commit 들이모도 합쳐지는데 시간 순서대로 아래에서 위로 쌓..
Magazine B는 제품 리스트에서 상세페이지까지 모두 query patameter를 사용했지만, 프로젝트에서는 제품 리스트페이지만 query parameter를 사용했고, 제품 상세 페이지는 path variable를 사용하여 구현하기로 했다. Magazine K 상세페이지 → restful api 구현을 위해 path variable사용한다. → 등록되지 않은 제품(ex. ~/products/100)의 url 주소로 접속시 404 error 반환한다. urls.py # products.urls.py 파일 urlpatterns = [ path('', ProductView.as_view()), path('/', ProductDetailView.as_view()), ] 아래 주소와같이 지정한 url 주소..
Magazine B은 여느 웹사이트와 동일하게 아이디와 비밀번호로 로그인을 하며, 회원가입 조건은 아이디와 비밀번호, 이름 이메일이 필수 입력 조건이지만 아이디와 비밀번호 이메일에는 특정 문자 입력 조건이 있으며 이메일 휴대전화는 조건이 따로 없었다. Magazine K 회원가입 조건 → 회원 아이디와 이메일과 비밀번호는 파이썬 정규표현식을 만족해야 하며, 아닐 시 400 에러를 반환한다. → 입력한 회원 아이디가 이미 중복된 아이디일 경우, 400 에러를 반환한다. → 프론트에서 보내주는 key값에 대한 오류 발생 시 key error 400를 반환한다. → 회원가입 성공 시 201 반환한다. views.py HTTP 통신으로 받은 method 종류에 따라 수행하는 방법을 정의해야 하는데, 회원가입은 ..
Magazine B 하나의 브랜드를 한호에 담아 전 세계에 소개하는 다큐멘터리 잡지를 출간하는 출판사 브랜드(?) 선정 과정 Magazine B는 서점에서 보는 잡지 표지로만 알고 있었고, 직접 판매하는 웹에는 들어가 본 적은 없었다. 프로젝트용 웹사이트를 찾아보던 중 한 번이라도 언급된 웹 사이트와 이미 사람들이 프로젝트 때 한 웹 페이지는 해보고 싶지 않아서 Magazine B를 선택했다. 사실 내가 선택한 사이트가 프로젝트 때 선정될지 몰랐다. Magazine B를 1차 프로젝트 때 선정한 이유를 정리하면 4가지 정도로 정리할 수 있을 것 같다. 1. Magazine B라는 웹 사이트가 다른 프로젝트 때 선정된 적 없는 것 같아서 2. 깔끔하고, 감각적이며, 복잡하지 않은 웹 페이지 레이아웃 3. ..
초기 제품 모델링 매거진을 판매하는 웹 사이트를 선정하여 모델링 중 메인 카테고리와 서브카테고리를 나눴으나, 제품이 많지 않기 때문에 카테고리가 많지 않아도 될 것같다는 판단하에, 메인과 서브 카테고리를 나누지 않고 합치게되었다. 초기 모델링 -> 변경된 모델링 → 문제 발생 추후 기능구현 중 메인 카테고리에 대한 정보만 전달하고 싶은데 서브 카테고리 값도 불러오게되서 코드에 의미없는 슬라이싱이 추가되는 등 이상한 코드가 되어버렸다. related_name 활용한 모델링 → related_name 활용 many to many field 에서 역참조할때 _set 사용 대신 직접 이름을 지정하여 이 이름으로 역참조를 할 수 있게 만들어주는 related_name을 이런 경우에 사용할 수 있다는 멘토님의 조언..
- Total
- Today
- Yesterday
- Java
- django
- git 공부
- 디자인 패턴
- Django tutorial
- 회원가입
- authenticate()
- 한글 형태소 분석기
- 환경 변수 설정
- 검색 결과 내 페이지네이션
- musma
- git공부
- git
- error: failed to push some refs to 'https://github.com/
- 회원 로그인
- 암호화
- Python
- path variable
- python3
- 배열
- 면접을 위한 CS 전공 지식 노트
- 커맨드 객체
- Magazine K
- 혼자 공부하는 파이썬
- 톰캣
- Spring
- API
- django.contrib.auth
- django-environ
- 웹페이지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |