azure-storageをDjangoで直接使用する方法はありますか?私は現在、私のDjangoアプリ(Azure VMでUbuntu OSでホストされています)にAzure Cloud Storageを設定しようとしているため、django-storages
はAzure Storage SDKと正しくインターフェースしていないようです(既知の問題:see here)。私のDjangoバージョンが< 1.6.2であれば、そこにリストされている修正は私にとってはうまくいかないでしょう。DjangoでAzure Storage SDKを使用する(完全にdjango-storageへの依存関係を取り除く)
このように私はAzureストレージをDjangoで直接使用する必要があります。誰もそれを前に設定していますか?私は画像とmp3sをCloud Storageに保存する必要があります。
現在、私のmodels.pyで、私が持っている:
def upload_to_location(instance, filename):
try:
blocks = filename.split('.')
ext = blocks[-1]
filename = "%s.%s" % (uuid.uuid4(), ext)
instance.title = blocks[0]
return os.path.join('uploads/', filename)
except Exception as e:
print '%s (%s)' % (e.message, type(e))
return 0
class Photo(models.Model):
description = models.TextField(validators=[MaxLengthValidator(500)])
submitted_on = models.DateTimeField(auto_now_add=True)
image_file = models.ImageField(upload_to=upload_to_location, null=True, blank=True)
そしてdjango-storages
とboto
残りの世話をします。しかし、私はAzureのクラウドストレージとジャンゴ・ストレージをフックアップするとき、私は次のエラーを取得:
Exception Value:
'module' object has no attribute 'WindowsAzureMissingResourceError'
Exception Location:
/home/mhb11/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/storages/backends/azure_storage.py in exists, line 46
を、コードの関連するスニペットは、次のとおりです。
def exists(self, name):
try:
self.connection.get_blob_properties(
self.azure_container, name)
except azure.WindowsAzureMissingResourceError:
return False
else:
return True
のAzureへの接続ようですコンテナに問題があります。私のsettings.pyでは、私が持っている:
DEFAULT_FILE_STORAGE = 'storages.backends.azure_storage.AzureStorage'
AZURE_ACCOUNT_NAME = 'photodatabasestorage'
AZURE_ACCOUNT_KEY = 'something'
AZURE_CONTAINER = 'somecontainer'
先に述べたように、私は完全にジャンゴ・ストレージをバイパスするソリューションを必要とし、ちょうど仕事を得るためにAzureストレージSDKに依存しています。
注:必要な場合に備えて、詳細をお尋ねください。
すばやく 'PROJECT_ROOT'が何であるかを明確にすることはできますか? –
OSのアプリケーションの絶対パスは –
です。ImageField属性の 'upload_to'を' blob_service.put_block_blob_from_path'(または 'put_block_blob_from_file')でオーバーライドする必要がありますか? –