[Fixed]-Django: serving ADMIN media files

32👍

Your answer is that unless ADMIN_MEDIA_PREFIX explicitly sets a domain
the runserver command will serve out the admin media files from contrib.admin.

I got burned by this magic behaviour, too. There was a ticket for this (Ticket #8336), but the design decision was to leave the convenience and confusion as it is.

So to serve your admin media (for using grappelli or whatever admin skin you want to use) from your directories with the runserver command you have to use something like:

MEDIA_ROOT =  os.path.join(PROJECT_ROOT, 'media/')
ADMIN_MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'admin-media/')
MEDIA_URL = '/site-media/'
ADMIN_MEDIA_PREFIX = 'http:/localhost:8000/admin-media/'

I hope I am resurrecting the correct question here. Apologies in advance.

👤phoku

3👍

It is advised to run the dev server a little bit different [1]
python manage.py runserver mydomain.com:8000 –adminmedia=/path/to/your/admin/media/

[1] http://code.google.com/p/django-grappelli/wiki/Installation

👤zalun

2👍

Try

(r’^admin_media/(.*)’, ‘django.views.static.serve’, {‘document_root’ : ‘django/contrib/admin/media/’, ‘show_indexes’ : True}),

in your urls.py file. And change your

ADMIN_MEDIA_PREFIX = '/admin_media/'

2👍

I just fixed a similar bug in my test site. ADMIN_MEDIA_PREFIX and MEDIA_URL should never be the same, see the following note in the docs:

Make sure to use a trailing slash, and
to have this be different from the
MEDIA_URL setting (since the same URL
cannot be mapped onto two different
sets of files).

1👍

Try changing:

ADMIN_MEDIA_PREFIX = '/static/media/'

This assumes that your MEDIA_ROOT/media/ directory contains the admin media folder (which is what I understood from your question).

👤ars

1👍

Since staticfiles inclusion into trunk, (circa 1.3 I believe), the ADMIN_MEDIA_PREFIX magic is no longer used.

Nowadays, runserver assumes your STATIC_URL + ‘admin/’. It secretly and silently intercepts your requests, ignores all your urlconf’s, and tries to make you go mad.

👤s29

0👍

Try to Use STATICFILES_DIRS as blow

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    ("images", os.path.join(STATIC_ROOT,'images').replace('\\','/')),
    ("css",    os.path.join(STATIC_ROOT,'css').replace('\\','/')),
    ("js",     os.path.join(STATIC_ROOT,'js').replace('\\','/')),
)

Have a goodluck!

👤HUHU

Leave a comment