Django + Google Cloud Strage에서 ImageField 이미지를 서버에서도 정상적으로 표시

Heroku 또는 GAE(Google App Engine)와 같은 서버에서 ImageField를 사용해도 이미지가 제대로 표시되지 않습니다.

이는 SQL이 이미지 업로드를 지원하지 않으므로 이를 해결하려면 Google Cloud Strage 또는 Amazon S3와 같은 클라우드 스토리지에 이미지를 업로드해야 합니다.

이번에는 Google Cloud Storage에 이미지를 업로드하는 방법을 소개합니다.

Django Strage (Google Cloud Storage) 공식 문서
htps : //d 짱고-s 토레 s. Red d. cs. 이오 / 엔 / ㅁ st / 바 c 켄 ds / gc ぉ d. HTML

Django Strage 설치



Django에서 Google Cloud Strage를 처리하는 Django 라이브러리 Django Strage (Google Cloud Storage)를 pip로 설치합니다.

bash
$ pip install django-storages[google]

Google Cloud Platform에서 자격 증명 얻기



Google Cloud Platform에서 Cloud Strage 자격 증명을 등록하고 자격 증명이 포함된 JSON 파일을 가져옵니다.

서비스 계정 얻기



Google 시작 가이드( h tps : // c ぉ d. 오, ぇ. 코 m / 드 cs / 어울리는 치카 치온 / 갓찐 g-s r d )에서 구할 수 있습니다.

1단계
Google 시작 가이드( htps : // c ぉ d. 오, ぇ. 코 m / 드 cs / 어울리는 치카 치온 / 갓찐 g-s r d ) 링크에서 '서비스 계정 키 만들기 페이지로 이동'을 선택합니다.


2단계
새 서비스 계정을 만들고 서비스 계정 이름을 입력합니다.

그런 다음 역할에서 스토리지 -> 스토리지 관리자를 선택합니다.
키 유형이 JSON인지 확인하고 '만들기' 버튼을 누릅니다.

그러면 JSON 파일이 다운로드됩니다.


다운로드한 JSON 파일은 Django 프로젝트의 루트 디렉토리에 저장합니다.

Google Cloud Storage 버킷 만들기



Cloud Strage 단위를 버킷이라고 합니다(데이터를 포함하는 버킷 같은 의미).
이것을 만들고 데이터를 저장합니다.

Google Cloud Console (Cloud Strage)
htps : // 이런. cぉd. 오, ぇ. 코 m / s 토라 게 / b 로 wse r

위의 URL에서 액세스하면 다음과 같은 작성 화면으로 전환한다고 생각하므로 새 버킷을 작성합니다.


완료되면 아래와 같은 화면이 됩니다.


이것으로 Google Cloud Platform console에서 설정이 완료됩니다.

장고에서 설정



settings.py에 설정 추가



settings.py 파일에서 기본 스토리지 및 버킷 이름을 설정합니다.

settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'

GS_BUCKET_NAME = '[YOUR_BUCKET_NAME_GOES_HERE]'

from google.oauth2 import service_account

GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
    os.path.join(BASE_DIR, '[YOUR_AUTHENTICATON_KEY_FILE_NAME].json'),
)

이것으로 설정이 완료됩니다.

그리고 다음 명령을 실행합시다.

bash
$ python manage.py collectstatic

그리고 설정 변경을 서버에 배포하면 제대로 작동해야합니다.

수고하셨습니다.

좋은 웹페이지 즐겨찾기