我正在使用Azure存储帐户存储我的媒体文件
在settings.py中设置它很简单:
DEFAULT_FILE_STORAGE = 'storages.backends.azure_storage.AzureStorage'
AZURE_ACCOUNT_NAME = 'my_account_name'
AZURE_ACCOUNT_KEY = 'my_account_key'
AZURE_CONTAINER = 'my-container'
但是,我稍后考虑过要将Azure CDN用于提供媒体文件。我将如何将其指向CDN URL?我尝试在MEDIA_URL中设置它
MEDIA_ROOT = os.path.join(BASE_DIR, 'upload')
MEDIA_URL = '//my-media.azureedge.net/my-container/'
但是我的存储帐户blob显示为默认网址,即“xxxxx.blob.core.windows.net”,而不是我的媒体网址。
我如何展示MEDIA_URL而不是'xxxxx.blob.core.windows.net'?
答案 0 :(得分:1)
谢天谢地,我已经有了这个问题的答案。您需要在'storages'库中覆盖Azure的存储后端类,将blob主机名替换为CDN主机名。
settings.py
MEDIA_URL = '//my-media.azureedge.net/my-container/'
storages.py
import re
from jaguar import settings
from storages.backends.azure_storage import AzureStorage
class AzureCDNURL(AzureStorage):
def url(self, name):
ret = super(AzureCDNURL, self).url(name)
_ret = re.sub('//[a-z.0-9A-Z]*/', settings.MEDIA_URL, ret)
return _ret