Hat jemand irgendwelche Tipps zur Verwendung von azure-storage direkt mit Django? Ich frage, weil ich derzeit versuche, Azure Cloud Storage für meine Django-App (gehostet auf Azure VM mit Ubuntu OS) einzurichten, und django-storages
scheint nicht korrekt mit Azure Storage SDK Schnittstelle (bekanntes Problem: see here). Der dort aufgelistete Fix funktioniert nicht, wenn meine Django-Version < ist. 1.6.2.Verwenden von Azure Storage SDK mit Django (und Entfernen der Abhängigkeit von Django-Speichern vollständig)
Also muss ich Azure-Speicher direkt mit Django verwenden. Hat jemand das schon mal gemacht? Ich muss Bilder und mp3s auf dem Cloud Storage speichern.
Derzeit in meinem models.py, ich habe:
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)
Und dann django-storages
und boto
kümmern sich um den Rest. Allerdings, wenn ich django-Speicher bis mit Azure Cloud Storage Haken, ich die folgenden Fehlermeldung erhalten:
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
und den relevanten Ausschnitt aus dem Code ist:
def exists(self, name):
try:
self.connection.get_blob_properties(
self.azure_container, name)
except azure.WindowsAzureMissingResourceError:
return False
else:
return True
Es scheint, dass die Verbindung zum Azure Behälter versagt. In meinem settings.py, ich habe:
DEFAULT_FILE_STORAGE = 'storages.backends.azure_storage.AzureStorage'
AZURE_ACCOUNT_NAME = 'photodatabasestorage'
AZURE_ACCOUNT_KEY = 'something'
AZURE_CONTAINER = 'somecontainer'
Wie bereits beschrieben, ich brauche eine Lösung, die django-Speicher vollständig umgeht, und verlässt sich nur auf Azure Storage SDK die Arbeit zu erledigen.
Hinweis: Fragen Sie mich nach weiteren Informationen, falls Sie diese benötigen.
Können Sie schnell klären, was 'PROJECT_ROOT' ist? –
Es ist der ABS-Pfad Ihrer Anwendung in OS –
Hmm, also muss ich 'upload_to' irgendwie in meinem ImageField-Attribut mit' blob_service.put_block_blob_from_path' (oder 'put_block_blob_from_file') überschreiben? –