Я запускаю приложение «Диспетчер файлов» на локальном компьютере с помощью прокси-сервера Google Cloud Sql и сохраняю файлы в корзине Google Cloud Storage. Файл сохраняется в корзине, но для FileField установлено значение «ноль». Я хочу, чтобы он отображал URL, по которому я могу получить доступ к файлу.
Я следую за этим ответом Настроить Django и Google Cloud Storage?
Я установил GoogleОбщедоступное облачное хранилище.
Django Модель:
class Document(models.Model):
docfile = models.FileField(upload_to='documents/%Y/%m/%d')
Setting.py:
#MEDIA_URL = "/media/"
#MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = 'printhub-files'
GS_PROJECT_ID = 'preasy-53c43'
GS_MEDIA_BUCKET_NAME = 'printhub-files'
# GS_STATIC_BUCKET_NAME = '<name-of-static-bucket>'
# STATIC_URL = 'https://storage.googleapis.com/{}/'.format(GS_STATIC_BUCKET_NAME)
MEDIA_URL = 'https://storage.googleapis.com/{}/'.format(GS_MEDIA_BUCKET_NAME)
Ожидаемый результат:
{
"id": 13,
"docfile": "https://storage.googleapis.com/bucket/documents/2019/11/03/myfile.pdf",
}
ActualРезультат:
{
"id": 13,
"docfile": null,
}
Если я изменю свой Settings.py на (раскомментируйте строку 1,2. Строка комментария 4), файл будет сохранен на моем носителе / в папке на локальном компьютере, а для "docfile" будет установлено значениеURL ведра:
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
GS_BUCKET_NAME = 'printhub-files'
GS_PROJECT_ID = 'preasy-53c43'
GS_MEDIA_BUCKET_NAME = 'printhub-files'
# GS_STATIC_BUCKET_NAME = '<name-of-static-bucket>'
# STATIC_URL = 'https://storage.googleapis.com/{}/'.format(GS_STATIC_BUCKET_NAME)
MEDIA_URL = 'https://storage.googleapis.com/{}/'.format(GS_MEDIA_BUCKET_NAME)
Я получаю вывод:
{
"id": 13,
"docfile": "https://storage.googleapis.com/bucket/documents/2019/11/03/myfile.pdf",
}