외부 URL로부터 이미지 다운받아서 ImageField에 저장하기
from tempfile import NamedTemporaryFile
from django.core.files import File
from urllib.request import urlopen
# Serializer
def create(self, validated_data):
img_temp = NamedTemporaryFile(delete=True)
img_temp.write(urlopen('이미지 URL').read())
img_temp.flush()
[모델명].[이미지필드].save('파일명', File(img_temp))
models.TextChoice 속성
- .value: db에 저장되는 값
- .label: 사용자에게 보여지는 값
- .name: 클래스에 저장된 변수명
Request Method OPTIONS, HEAD
- OPTIONS: 현재 End-point가 제공 가능한 API method 정보 제공
- HEAD: 요청에 대한 Header 정보만 제공
- https://sanghaklee.tistory.com/57
JWT 인증을 사용할 때 요청한 사용자를 알아내는 방법
- 일반 인증과 같이 request.user로 접근 가능
Django through
- ManyToMany 필드에서 중간 테이블을 지정할 때 사용
- ManyToMany 관계에서 필드를 추가로 확장해야 할 때 중간 테이블이 필요 ex) 주문에서 상품별 개수 정보를 저장하기 위해 Order 모델과 Product 모델을 연결하는 Order-Product 모델 생성
- https://lee-seul.github.io/django/2019/02/21/django-extend-manytomanyfield.html
Django signal
- 특정 액션이 발생했을 때 알려주는 역할
ex) pre_save, post_save: save() 함수가 실행되기 전과 후에 알려줌 - https://docs.djangoproject.com/en/4.0/topics/signals/
로컬 네트워크에 있는 다른 컴퓨터에서 서버에 접속할 수 있게 하기
- python manage.py runserver 0.0.0.0:8000으로 서버 실행하면 다른 컴퓨터에서 로컬 아이피 주소로 접속 가능
- 로컬 아이피 주소 확인하는 법
- Mac: 네트워크 환경설정에서 확인 가능
- Window: 콘솔에서 ipconfig 입력하면 확인 가능
개별 record에 대한 접근권한 부여
- 커스텀 Permission 클래스에서 has_object_permission() 메소드 구현
- https://seoyoung2.github.io/django/2020/08/18/Authentication-Permission.html
Admin 페이지에서 custom boolean field를 아이콘으로 표시하는 방법
- 필드명.boolean = True
- https://books.agiliq.com/projects/django-admin-cookbook/en/latest/boolean_fields.html
Writable Nested Serializer
- Nested Serializer로 데이터를 받으려면 create() 메소드 구현해야 함
- https://stackoverflow.com/questions/28078092/django-rest-framework-writable-nested-serializers
Exists()
- 존재 여부를 알려주는 aggregate function
- https://stackoverflow.com/questions/31169108/django-query-annotation-with-boolean-field
ModelChoiceFilter
- Foreign Key의 필드로 정렬하고 싶을 때 사용
- https://stackoverflow.com/questions/24861252/django-rest-framework-foreign-keys-and-filtering
데이터 자동생성 커맨드 작성
- Custom Command 작성
- 앱 폴더/management/commands 폴더 아래에 파일 생성
- 커맨드 실행 방법: python manage.py 파일명
- https://docs.djangoproject.com/ko/4.0/howto/custom-management-commands/
- 유용한 모듈
- django.seed
- Faker: https://faker.readthedocs.io/en/master/index.html
- random
Git Reset 취소
- git reflog로 이동할 HEAD 확인
- git reset --hard HEAD@{n} (n: 이동할 HEAD 번호)
- https://88240.tistory.com/284
'인코스런 2기' 카테고리의 다른 글
커머스 프로젝트 5주차 WIL (0) | 2022.07.16 |
---|---|
커머스 프로젝트 4주차 WIL (0) | 2022.07.10 |
Day4 - 장고 온보딩 프로젝트 4 (0) | 2022.06.10 |
Day3 - 장고 온보딩 프로젝트 3 (0) | 2022.06.09 |
Day2 - 장고 온보딩 프로젝트 2 (0) | 2022.06.09 |