Caricare file statici sul runserver (css e immagini)

63 visualizzazioni
Passa al primo messaggio da leggere

Karim Gorjux

da leggere,
27 ago 2010, 02:41:5927/08/10
a djan...@googlegroups.com
Creo questo nuovo thread per non andare offtopic con il mio messaggio precedente.

2010/8/26 Ataru Moroboshi <moro...@tin.it>

Il server di django di default non carica i file statici,
a scopo di debug puoi farglielo fare, vedi
http://docs.djangoproject.com/en/dev/howto/static-files/
per istruzioni

Ho provato un po' in tutti i modi, ma non riesco a fargli caricare un'immagine e lo stile.

In urls.py ho messo

from django.conf import settings

[...]

    (r'^media/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root': 'settings.STATIC_DOC_ROOT'}),

in settings.py

STATIC_DOC_ROOT = '/Users/karim/Projects/simplesite/template/media/'

Ora però come setto queste variabili?

MEDIA_ROOT = ''
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/'

Io ho provato a metterci un po' di tutto, ma non funziona niente :-|

Nei file dei template poi devo caricare usando

"media/syle.css"
"media/header.jpg"

Giusto?

--
Karim Gojux
www.karimblog.net

Massimiliano della Rovere

da leggere,
27 ago 2010, 03:28:1527/08/10
a djan...@googlegroups.com
prova a mettere una slash iniziale: /media/style.css

-------------------------------


MEDIA_ROOT equivale al tuo STATIC_DOC_ROOT, cioè il percorso assoluto
della cartella che contiene css, js e quant'altro.
MEDIA_URL invece è l'url che fornisce i file css, js e quant'altro del
tuo server.
ADMIN_MEDIA_PREFIX fornirà i css, js e quant'altro dell'interfaccia di admin.
Vengono utilizzati principalmente quando installi django con apache,
non quando lanci django con mannage.py runserver.

Poi ti consiglio di usare riferimenti relativi al filesystem
(DJANGO_ROOT, SITE_ROOT) e non assoluti "/home/karim/django", così se
devi spostare il tuo progetto o usi svn continuerà a funzionarti
tutto.
Ti faccio un piccolo estratto del mio settings.py

-*-*-*-*-*-*-*-*-
import os
import django

DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__))
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

MEDIA_ROOT = os.path.join(SITE_ROOT, 'assets')
MEDIA_URL = '/site_media/'
ADMIN_MEDIA_PREFIX = '/media/'


TEMPLATE_DIRS = (
os.path.join(SITE_ROOT, 'templates'),
)
-*-*-*-*-*-*-*-*-


2010/8/27 Karim Gorjux <lemie...@gmail.com>:

> --
> Hai ricevuto questo messaggio perché sei iscritto al gruppo "Django-it" di
> Google Gruppi.
> Per postare messaggi in questo gruppo, invia un'email a
> djan...@googlegroups.com.
> Per annullare l'iscrizione a questo gruppo, invia un'email a
> django-it+...@googlegroups.com.
> Per ulteriori opzioni, visita il gruppo all'indirizzo
> http://groups.google.com/group/django-it?hl=it.
>

Karim Gorjux

da leggere,
27 ago 2010, 04:07:5327/08/10
a djan...@googlegroups.com


2010/8/27 Massimiliano della Rovere <massimiliano...@gmail.com>
-*-*-*-*-*-*-*-*-
....

Grazie per i suggerimenti. Ora ho impostato quanto segue, ma non funziona anche se l'header, controllando il link, mi sembra giusto: http://127.0.0.1:8000/media/header.jpg (se lo carico mi dice che il link è non valido)

######### settings.py #########

# restituisce la directory dove e' installato django
DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__))

# restituisce la directory dove si trova il settings.py
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

# aggiunge template/media al path attuale
STATIC_DOC_ROOT = os.path.join(SITE_ROOT, 'template/media/')


MEDIA_ROOT = STATIC_DOC_ROOT

MEDIA_URL = '/media/'

TEMPLATE_DIRS = (os.path.join(SITE_ROOT, 'template'))

######### end of settings.py #########

######### urlss.py #########

[...]

urlpatterns += patterns(
    "django.views",
    url(r"^%s(?P<path>.*)/$" % settings.MEDIA_URL[1:], # lo slide rimuove il / iniziale
    "static.serve", {
        "document_root": settings.MEDIA_ROOT,
    })
)
[...]
######### end of urls.py #########


--
Karim Gojux
www.karimblog.net

Karim Gorjux

da leggere,
27 ago 2010, 04:25:3627/08/10
a djan...@googlegroups.com


2010/8/27 Karim Gorjux <lemie...@gmail.com>

...

Ora funziona. Ho fatto un po' di modifiche, ma cosa ha cambiato tutto è stato modificare

ADMIN_MEDIA_PREFIX = '/media/'

in

ADMIN_MEDIA_PREFIX = '/admin-media/

--
Karim Gojux
www.karimblog.net
Rispondi a tutti
Rispondi all'autore
Inoltra
0 nuovi messaggi