如何使用django-cumulus来提供静态文件?

时间:2012-11-09 12:06:26

标签: django rackspace-cloud django-staticfiles

我正在尝试使用django-cumulus从Rackspace CloudFiles中提供文件。我目前只在我的本地开发服务器上使用Django 1.4.2进行尝试。

我可以使用积云的syncstatic管理命令成功上传我的所有静态资源,但我似乎无法在我的网站上以相同的设置显示它们。

如果我的相关设置是:

STATIC_URL = '/static/'
CUMULUS = {
    'USERNAME': 'myusername',
    'API_KEY': 'myapikey',
    'CONTAINER': 'mycontainername',
    'STATIC_CONTAINER': 'mycontainername',
}
DEFAULT_FILE_STORAGE = 'cumulus.storage.CloudFilesStorage'
STATICFILES_STORAGE = 'cumulus.storage.CloudFilesStaticStorage'

然后当我运行syncstatic时,我所有应用的静态文件都会上传到/mycontainername/static/,正如我所期望的那样。但是,当我在管理员中加载页面时,它会忽略STATIC_URL并尝试通过http://uniquekey....r82.cf2.rackcdn.com/path/to/file.css而不是http://uniquekey....r82.cf2.rackcdn.com/static/path/to/file.css等网址投放资源。

此外,我无法看到如何让我的公共(非管理员)页面使用CloudFiles上的静态文件,而不是从本地/static/目录中提供它们。

我错过了一些关键的设置,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我做的是

git clone https://github.com/richleland/django-cumulus.git

编辑context_processors.py

from django.conf import settings

from cumulus.storage import CloudFilesStorage

def cdn_url(request):
    """
    A context processor to expose the full cdn url in templates.

    """
    cloudfiles_storage = CloudFilesStorage()
    static_url = '/'
    container_url = cloudfiles_storage._get_container_url()
    cdn_url = container_url + static_url

    print {'CDN_URL': cdn_url}

    return {'CDN_URL': cdn_url}

完成后,使用sudo python setup.py install

安装它

请注意,来自django积云的context_processors.py实际上非常慢