The media is currently on my local development machine.
My MEDIA_ROOT, MEDIA_URL, ADMIN_MEDIA_PREFIX and are specified as below:
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), "media")
MEDIA_URL = '/media/'
SITE_URL = 'http://localhost:80'
ADMIN_MEDIA_PREFIX = '/media/admin/'
There is no 'admin' folder but that shouldn't make a difference I don't think. In the urls.py file I have:
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
I am at a loss as to what I should do to get it working. [I am trying to learn django and am working with an existing project that's pretty hairy]
With python-django 1.7 I used
works with django 1.8 - 1.11:
https://docs.djangoproject.com/en/1.11/howto/static-files/#serving-files-uploaded-by-a-user-during-development
note that Django documentation states that this is
(obviously unless you use
if settings.DEBUG:
part)You're mixing and matching pre and post-Django 1.3 static file handling. Originally all static files were served from
MEDIA_URL
, but Django 1.3 introduced the staticfiles contrib package and the associatedSTATIC_ROOT
andSTATIC_URL
settings.django.views.static.serve
utilizes the new staticfiles app, which you haven't set up.Assuming you're running Django 1.3, first, you'll need to add 'staticfiles' to your
INSTALLED_APPS
. Then, you'll need to defineSTATIC_ROOT
andSTATIC_URL
. The standard location is a project-root level directory named "static".You'll also need to add the staticfiles template context processor:
This will make the
STATIC_URL
variable available in your templates, so you can reference your resources with something like{{ STATIC_URL }}css/style.css
All your static resources will also need to go into an app(s)-level directory named "static". The actual project-root level "static" directory is never directly used. It's simply the place where the
collectstatic
management command dumps all your static resources for use in production.If you want project-wide static resources (not tied to any one particular app), you'll need an entirely separate directory (i.e. not the same as
MEDIA_ROOT
orSTATIC_ROOT
). I tend to use one named "assets". You'll then need to tell Django to look in here for static resources as well with theSTATICFILES_DIRS
setting:MEDIA_ROOT
/MEDIA_URL
are now only used for user uploads (e.g. any file created throughFileField
s andImageField
s, so you still need it, but you won't ever manually store anything there.When you reach production, your webserver will need to serve both
MEDIA_ROOT
andSTATIC_ROOT
atMEDIA_URL
andSTATIC_URL
, respectively. You'll also need to run:To make Django compile all your static files into the directory specified by
STATIC_ROOT
.On development server, this page may help you. https://docs.djangoproject.com/en/1.2/howto/static-files/
By adding follow code to urls.py: