장고에서는 makemigrate와 migration으로 디비 스키마 구조가 바뀌었을 때 즉시 변경해서 배포할 수 있었습니다. fastapi에는 그런 기능이 없을까요? 검색해 보니 alembic 이라는 것이 있었는데요. 간단하게 세팅을 마쳐보도록 하겠습니다. 먼저 실습이 완료된 프로젝트 구조부터 보고 가겠습니다. 루트에 models.py, Dockerfile, docker-compose.yml, .dockerignore, requirements.txt, alembic.ini가 있습니다. 그리고 ddl, migrates, app 패키지가 있는 구조입니다. migrates 안에 어떤 것이 있는지 보겠습니다. versions를 담은 정보와 env.py, README, script.py.mako가 있습니다. ve..
웹 검색 결과
안녕하세요. 이번 시간에는 settings.py에 작성하는 MEDIA_ROOT와 MEDIA_URL을 어디에 쓰는지 알아보겠습니다. 먼저, Post에 ImageField를 추가했어요. ImageField를 사용하기 위해서는 Piliow를 설치해야 합니다. 이는 장고가 이미지 field를 validation 할 때 piliow를 쓰기 때문입니다. 이제 post 테이블을 보면 image가 VARCHAR로 있음을 알 수 있는데요. 직감하셨겠지만, 이 필드는 경로를 저장합니다. 실제 파일은 이 경로값을 읽어온 다음에 파일로 접근하게 됩니다. 이제, 새로운 포스트 하나 만들고 1.jpg를 이미지로 해 보겠습니다. 그러면, 제 프로젝트 root 폴더에 1.jpg가 올라가 있음을 볼 수 있는데요. 사실 이는 원하는 방..
debug=True로 세팅하고 admin page를 켜 보면 잘 켜집니다. 그런데 production 환경에서 debug 옵션을 True로 줄 리는 없을 겁니다. debug=False로 세팅하는 경우 몇 가지 세팅을 하셔야 하는데요. ALLOWED_HOSTS와 CORS_ALLOWED_ORIGINS 세팅을 해 주셔아 합니다. 먼저 django-cors-headers를 설치 후에 아래와 같은 설정을 해 주었습니다. ALLOWED_HOSTS에 "localhost"를 넣었습니다. 다음에 "corsheaders.middleware.CorsMiddleware"를 CommonMiddleware 위에 넣었습니다. 다음에, CORS_ALLOWED_ORIGINS에 "http://localhost:8000"을 추가해 주었습..
이번 시간에는 django의 include에 대해 알아봅시다. 장고 프로그램이 커지면 여러 domain을 정의해야 하는 경우가 있어요. 예를 들어, post라던지, account와 같은 것들이 이에 속할 겁니다. 이것들을 하나의 app에서 관리하면 너무 비대해 질 것 같습니다. 그래서, 이를 나눠보도록 하겠습니다. 먼저 project의 루트에는 djangoex 패키지가 있어요. 이 안에는 app, djangoex가 있는데요. djangoex 밑에 settings.py가 있는 구조입니다. 저는 루트의 djangoex 밑에서 startapp 명령어를 이용해서 posts app을 시작해 보겠습니다. 그러면, posts는 위와 같이 생성됩니다. 이제 domain 별로 url을 관리해 봅시다. 먼저, instal..
django에서 블로그를 생성할 때 기본 포스트가 생성되게 하고 싶습니다. 혹은, 아이디를 만들 때 포스트가 새로 만들어지게 하고 싶습니다. 이럴 때 어떻게 하면 좋을까요? view 단에서 user가 만들어지면 처리하게 할 수도 있겠습니다만, signal 등으로 처리하는 것도 나쁘지 않은 선택입니다. 다만, 공식 문서에서는 warning에 이해하기 힘든 로직이 작성될 수 있다고 하는데요. 레코드가 추가되는 부분하고, 그럴 때 발생하는 signal을 처리하는 부분이 분리가 되어 있다 보니 그러지 않나 싶습니다. 사실 linux에서 sigaction을 써 보셨다면 공감하실 수도 있을 듯 합니다. 그럼에도 불구하고, 저는 생각보다 유용하게 써먹었습니다. 그래서, 이번 시간에는 signal을 알아보도록 하겠습니..
최근댓글