2012-11-09 9 views
5

Ich versuche django-cumulus für das Versenden von Dateien aus Rackspace CloudFiles zu verwenden. Ich versuche es derzeit nur auf meinem lokalen Dev-Server mit Django 1.4.2.Wie benutze ich Django-Cumulus zum Versenden von statischen Dateien?

Ich kann den Verwaltungsbefehl syncstatic von Cumulus verwenden, um alle meine statischen Assets erfolgreich hochzuladen, aber ich kann sie nicht auf meiner Site mit den gleichen Einstellungen anzeigen.

Wenn meine relevanten Einstellungen sind:

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' 

dann, wenn ich laufen syncstatic alle meine apps' statische Dateien in /mycontainername/static/ hochgeladen werden, wie ich erwarten würde. Aber wenn ich eine Seite in Admin lade ignoriert sie STATIC_URL und versucht, Assets von URLs wie http://uniquekey....r82.cf2.rackcdn.com/path/to/file.css statt http://uniquekey....r82.cf2.rackcdn.com/static/path/to/file.css zu dienen.

Auch kann ich nicht sehen, wie meine öffentlichen (nicht-Admin) Seiten die statischen Dateien auf CloudFiles verwenden, anstatt sie aus einem lokalen Verzeichnis /static/ zu bedienen.

Habe ich eine wichtige Einstellung verpasst oder mache ich etwas anderes falsch?

Antwort

0

Ich hatte das gleiche Problem. Was ich tat, war zu

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

bearbeiten 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} 

Sobald Sie fertig sind, installieren Sie es mit sudo python installieren setup.py

beachten Sie, dass context_processors. Py von Django Cumulus ist eigentlich ziemlich langsam

+0

Dank amdstorm. Vermutlich könnte man die 'static_url' von' settings' ableiten, anstatt sie hart zu codieren. Und ich bin mir nicht sicher, ob Sie die Print-Anweisung da drin lassen wollten :) –

+0

Didnt wollte die Print-Anweisung dort lassen! Es tut uns leid! – amdstorm

+0

Ich erkannte, wenn Sie das statische Asset kompilieren, die statische URL wird nicht verwendet, das ist, warum ich es als eine/schlechte Variable benannte meine schlechte – amdstorm