2012-12-16 20 views
6

Sto avendo alcuni problemi con i file degli utenti al servizio caricati dalla mia applicazione Django caricato user_res/pictures/folder.Django servire all'utente immagini

dal settings.py del progetto:

MEDIA_ROOT = 'user_res' 

MEDIA_URL = '/user_res/' 

STATIC_ROOT = '' 

STATIC_URL = '/static/' 

Ogni volta che tento di fare riferimento a una risorsa statica (cioè CSS o file JS), tutto funziona bene utilizzando URL come

http://localhost:8000/static/<subfolder>/main.css. 

Tuttavia , Non riesco ad accedere ai file caricati dall'utente (che vengono creati dall'interfaccia di amministrazione nella cartella user_res/pictures con un URL relativo come

user_res/pictures/test.jpg 

l'URL viene dinamicamente creata con questa riga di codice da un modello di Django Immagine callable:

return '<img src="{}"/>'.format(self.content.url) 

mi hanno alcuna url-s dedicato sia per file statici o multimediali nel file url.py.

Qualcuno ha qualche idea su come fare Django per i file multimediali? Capisco che per gli ambienti live avrò bisogno di configurare un server http per servire quella particolare directory, ma per ora voglio mantenere una suite di sviluppo leggera.

Grazie.

+1

Mi piace così http://stackoverflow.com/a/2040098/630877? – arie

risposta

0

penso che l'attributo url restituisce un URL relativo (Django's FileField documentation), quindi si dovrebbe avere:

return '<img src="{}"/>'.format(MEDIA_URL + self.content.url) 

URL relativi non funzioneranno, come un utente che visita "http: // localhost/libri /" richiedere "http: //localhost/books/user_res/pictures/test.jpg".

4

Modifica il tuo file urls.py come mostrato di seguito.

from django.conf import settings 
from django.conf.urls.static import static 

urlpatterns = patterns('', 
    # ... the rest of your URLconf goes here ... 
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

modificare i vostri progetti settings.py per assomigliare:

#Rest of the settings 
MEDIA_URL = '/media/' 
MEDIA_ROOT = 'media' 
STATIC_ROOT = '' 
STATIC_URL = '/static/' 

Si prega di leggere la documentazione ufficiale Django di servire file caricati da un utente con attenzione. Link a documenti: https://docs.djangoproject.com/en/1.5/howto/static-files/#serving-files-uploaded-by-a-user

Problemi correlati