Today I Learned
1. if __name__ == '__main__': 파이썬에서 모듈을 실행할 때, 해당 모듈이 직접 실행되는 경우에만 코드 블록을 실행하도록 하는 역할
하지만 해당 모듈이 직접 실행될 때에는 __name__ 변수에는 '__main__'이라는 값이 할당된다. 따라서 이 값을 이용하여, 해당 모듈이 직접 실행될 때만 코드 블록을 실행하도록 한다.
따라서, 위와 같은 멀티프로세싱 또는 멀티스레딩 코드를 작성할 때, 해당 코드 블록이 직접 실행될 때만 프로세스 또는 스레드를 생성하도록 하기 위해 if __name__ == '__main__': 구문을 사용
2. DRF에서 제공해주는 Browsable API사용하면, 브라우저에서 API를 쉽게 확인하고 이해하면서 디버깅할 수 있다. 브라우저에서 API를 직접호출하고 결과를 확인하면서 개발할 수 있어서 편리하다. => 이를 좀 더 보완한 것이 Postman
Postman을 사용하여 API응답을 확인하고, 응답 데이터를 파싱하여 테스트를 자동화할 수 있으며, API개발 및 테스트를 효율적으로 수행할 수 있다.
3. python, js, java 등은 json 형태와 유사한 키-밸류 자료구조를 사용하고 있는데,
통신을 위해 이러한 구조를 JSON으로 바꿔주는 것을 serialization
JSON을 받아 키-밸류 자료구조로 만드는 것을 deserialization
파싱parsing (데이터의 의미 해석하는 과정) : deserialization을 포함하는 넓은 의미
4. DRF에서 프론트 작업 - Fetch API (자바스크립트..)
새폴더 만든 후 index.html, index.js 생성
window.onload = async function loadArticles() {
const response = await fetch('http://127.0.0.1:8000/articles/', { method: 'GET' })
response_json = await response.json()
console.log(response_json)
}
이 상태로 live server 켜보면 CORS라는 에러 발생 cess to fetch at 'http://127.0.0.1:8000/articles/' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
CORS : Cross-Origin Resource Sharing, 웹 브라우저의 보안 정책
도메인이나 포트가 다른 서버에서 리소스 요청 시 요청을 차단한다.
서버측에서 CORS정책을 설정해주어야 한다.
Django에서 CORS정책 설정하기
(1) 라이브러리 설치 pip install django-cors-headers
(2) settings.py 수정
INSTALLED_APPS = [
# ...
'corsheaders',
# ...
]
MIDDLEWARE = [
# ...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware', (<-여기에 위 코드만 추가)
# ...
]
CORS_ORIGIN_ALLOW_ALL = True # 모든 도메인에서 요청을 허용하려면 True로 설정
=> 모든 도메인 요청 허용
(3) 특정 도메인 요청 허용
CORS_ORIGIN_WHITELIST = [
'https://example.com',
'https://subdomain.example.com'
]
'내일배움캠프 > 내일배움캠프 TIL' 카테고리의 다른 글
내일배움캠프 TIL 31일차 (0) | 2023.04.25 |
---|---|
내일배움캠프 TIL 30 (0) | 2023.04.24 |
내일배움캠프 TIL 28일차 (0) | 2023.04.20 |
내일배움캠프 TIL 27일차 (1) | 2023.04.19 |
내일배움캠프 TIL 26일차 (2) | 2023.04.17 |