0

Как использовать резервное хранилище Django Custom Storage с облачным хранилищем Google?Как использовать django-google-облако-хранилище для GCS в Django на GAE

Попытка использовать это: ckopanos's django-google-cloud-storage

Согласно документации, я добавил следующее к моей «settings.py»:

GOOGLE_CLOUD_STORAGE_BUCKET = [my bucket name] # the name of the bucket you have created from the google cloud storage console 
GOOGLE_CLOUD_STORAGE_URL = [my bucket URL] #whatever the url for accessing your cloud storgage bucket 
GOOGLE_CLOUD_STORAGE_DEFAULT_CACHE_CONTROL = [cache control] # default cache control headers for your files 

DEFAULT_FILE_STORAGE = 'google.storage.googleCloud.GoogleCloudStorage' 

И я добавил папку «Google»/пакет на мой файлы проекта, поэтому он должен быть доступен для 'settings.py'

Как использовать эту пользовательскую систему хранения в моих представлениях сейчас?

можно вручную использовать ГКС, выполнив следующие действия (в этом примере хранит XLSX на ГКС):

import cloudstorage as gcs 
from google.appengine.api import app_identity 
import xlsxwriter 
import StringIO 

bucket_name = os.environ.get('BUCKET_NAME', 
          app_identity.get_default_gcs_bucket_name()) 
bucket = '/' + bucket_name 

filename = bucket + '/'+ userid + '/' + [some code] + '.xlsx' 
gcs_file = gcs.open(filename, 
      'w', 
      content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 
      options={'x-goog-meta-user': userid}) 

output = StringIO.StringIO() 
workbook = xlsxwriter.Workbook(output, {'in_memory': True}) 
worksheet = workbook.add_worksheet() 

worksheet.write(0, 0, 'Hello World') 

# Close the workbook before streaming the data. 
workbook.close() 

# Rewind the buffer. 
output.seek(0)    

gcs_file.write(output.read()) 
gcs_file.close() 

Как импортировать систему хранения для использования в моих взглядов? Не могли бы вы рекомендовать другую систему хранения для Django и GCS?

+0

Рекомендовано? Для чего? – jonrsharpe

+0

Извините, позвольте мне перефразировать. Что является самым простым способом или проще всего реализовать пакет (который все еще поддерживается), чтобы подключить Django к Cloud Storage? Без необходимости писать собственную систему хранения. (I.e. есть пакет «plug and play», который я могу использовать, который поддерживается, и это работает с небольшими накладными расходами на разработку). Цель: загрузить файлы xlsx, xls и csv от нескольких пользователей до gcs и разрешить частную загрузку этих же файлов (ограничивается только пользователем, загрузившим файл). – cj1689262

+0

Поиск пакета явно вне темы, самый простой способ, скорее, основанный на мнениях. См. [Ask]. – jonrsharpe

ответ

1

Как и в других системах хранения файлов в Django, поскольку пользовательские хранилища данных в Django создаются путем определения пользовательского класса хранения, который должен быть subclass of django.core.files.storage.Storage.

django-cloud-storage, является специальным хранилищем данных, которое позволяет использовать GCS в Django, так же, как если бы вы использовали какой-либо другой сервер хранения.

DEFAULT_FILE_STORAGE = 'google.storage.googleCloud.GoogleCloudStorage' 

Вышеприведенная строка в файле settings.py делает GCS вашей файловой системой хранения по умолчанию. Это означает, что если вы определите новый FileField в своем models, он будет использовать Google Cloud Storage.

Вы можете использовать его в своих взглядах, как это:

from django.core.files.storage import default_storage 
file = default_storage.open(file_name, 'w') 
file.write(output.read()) 
file.close() 

Файл будет сохранен в ведре по умолчанию.

+0

Спасибо, вот как я его использовал. Я сбился с толку, потому что, читая документацию, казалось, что если вы импортировали 'default_storage' с 'из django.core.files.storage import default_storage', то он импортировал _Django's_ по умолчанию систему хранения (хранилище файловой системы), а не ваш settings.py определяет систему DEFAULT_FILE_STORAGE. – cj1689262

Смежные вопросы