본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Django 데모 참조 (Django demo reference)

원문 보기 위키 갱신

Django 소스는 GitHub에 있어요. fly launch는 Dockerfile과 fly.toml 구성 파일을 제공합니다. 애플리케이션을 변경할 때는 dockerfile-django를 사용해 업데이트된 Dockerfile을 생성할 수 있어요.

출처: 문서

본문

Django 소스는 GitHub에 있습니다. fly launch는 Dockerfile과 fly.toml 구성 파일을 제공할 거예요. 애플리케이션을 변경할 때는 dockerfile-django 를 사용해 업데이트된 Dockerfile을 생성할 수 있습니다.

조각들이 어떻게 조립되는지 살펴볼게요:

  • 원래 web-dictaphone 앱(HTML 제외)은 static 디렉터리에 있으며, 아이콘, 스크립트, 스타일, 웹 매니페스트를 포함하고 모두 정적 파일로 제공됩니다.
  • clips/templates/clips/index.html에는 HTML 템플릿이 있습니다.
  • Django Models and databases는 configured되어 개발 모드에서는 Sqlite3를, 프로덕션에서는 PostgreSQL을 데이터베이스로 사용합니다. 데이터베이스 접근은 DATABASE_URL 시크릿을 통해 이루어집니다.
  • Django Storages는 configured되어 개발에서는 파일시스템에, 프로덕션에서는 Tigris에 씁니다. 연결을 설정하는 데 다음 시크릿이 사용됩니다: AWS_ACCESS_KEY_ID, AWS_ENDPOINT_URL_S3, AWS_REGION, AWS_SECRET_ACCESS_KEY, BUCKET_NAME.
  • Django Channels는 configured되어 개발에서는 인메모리 채널을, 프로덕션에서는 REDIS_URL 시크릿을 기반으로 Redis를 사용합니다.

로직의 핵심 지점:

  • static/scripts/app.js는 Fetch API를 사용해 여러 지점에서 서버 요청을 하도록 수정되었습니다.
  • clips/views.py에는 인덱스 페이지 요청에 대한 응답과 오디오 클립의 GET, PUT, DELETE를 구성하는 로직이 있습니다.
  • 서버 측 실시간 구현 코드는 주로 Django Channels에 있으므로, clips/models.py의 몇 줄만 있으면 됩니다. 클라이언트 측은 static/scripts/websocket.js에서 제공됩니다. 업데이트 알림을 받으면 인덱스 페이지를 다시 가져와서 DOM의 본문을 새 내용으로 교체합니다.
  • WHISPER_URL 시크릿이 설정되면 PUT 요청으로 오디오 클립이 Whisper 서버로 전달되고, 응답을 사용해 PostgreSQL 데이터베이스를 업데이트합니다. 이는 Celery를 사용해 이루어집니다. 이에 대한 코드는 clips/tasks.py에 있어요.

더 알아보기 (Learn more)