Incorrectly Configured in / Empty Static Prefix Not Allowed - Django

I am working on loading / displaying images with Django.

The site is hosted on Heroku.

After this tutorial, I was able to successfully upload images.

However, the images did not appear in the template.

Then I found out that my urls.py should have this line at the end:

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

I added this to the end of my urls.py, but now I get this error:

 ImproperlyConfigured at / Empty static prefix not permitted 

I have MEDIA_URL and MEDIA_ROOT in my settings.py and none of them are empty.

 BASE_DIR = os.path.dirname(os.path.abspath(__file__)) MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash. # Examples: "http://example.com/media/", "http://media.example.com/" MEDIA_URL = '/media/' 

Why is this error happening and how can I fix it?

Here is what I consider the appropriate part of my urls.py:

 from django.contrib import admin from django.conf import settings from django.conf.urls.static import static import notifications admin.autodiscover() urlpatterns = patterns('', ....urls...... ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
+9
source share
7 answers

I added the same line to my urls.py and got the same error as you.

 + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

The documentation here talks about using settings.STATIC_URL and settings.STATIC_ROOT

I changed it to the documentation version

 urlpatterns = patterns('', ....urls...... ) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

and the error is gone!

I checked my settings file and made sure that settings.MEDIA_URL and settings.MEDIA_ROOT were defined correctly. Later, I again configured urls.py to use settings.MEDIA_URL and settings.MEDIA_ROOT . Everything worked as expected.

These are the relevant parts of my settings.py file:

 BASE_DIR = os.path.dirname(os.path.dirname(__file__)) REPOSITORY_ROOT = os.path.dirname(BASE_DIR) # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.6/howto/static-files/ STATIC_URL = '/static/' STATIC_ROOT = os.path.join(REPOSITORY_ROOT, 'static/') MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(REPOSITORY_ROOT, 'media/') 

I think MEDIA_URL was set incorrectly

+30
source

You also check both MEDIA_URL and MEDIA_ROOT, and for static files STATIC_ROOT STATIC_URL are defined correctly.

Also check the spelling :)

If one of them is configured with an error, this will cause this error.

+2
source

Just in case you have this problem, make sure you have both MEDIA_URL and MEDIA_ROOT installed.

I was getting an error

 ImproperlyConfigured at / Empty static prefix not permitted 

when I only had MEDIA_ROOT installed in django 1.11

As an alternative, the django project wiki says it cannot link to the URL in debug mode: https://docs.djangoproject.com/en/1.11/howto/static-files/#serving-files-uploaded-by- a-user-during-development

+1
source

To solve this problem, the following operators must be added to the settings.py file:

 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, "media") 
+1
source

I recently got the same error while working with Django 2.1. The problem was that I did not explicitly MEDIA_URL = '/media/' in the project settings file. As soon as I announced the same thing, the error was gone.

0
source

To fix this error, I had to put STATIC_ROOT and STATIC_URL above the STATICFILES_DIRS .

0
source

Make sure settings.py has:

 # Media MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') 

Then in urls.py try this

 urlpatterns[ ... ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 
0
source

Source: https://habr.com/ru/post/1236559/


All Articles