Managing Media Files in Django

In Django Media files are the files uploaded by users on the system. However, like static files media files shouldn’t be trusted.

There are always security concerns when dealing with user-uploaded content. Notably, it’s important to validate all uploaded files. Django offers a large degree of flexibility to manage user uploads.

In this article, we will go through the configuration of media files in Django.

Note that I am assuming you have a basic understanding of Django and have a basic project up and running, if not read the below tutorials.

Configuring Media Files in Django

Open settings.py file of your project and add the following configuration.

# Base url to serve media files
MEDIA_URL = '/media/'

# Path where media is stored
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

MEDIA_URL is the URL that will serve the media files.

During development, it doesn’t matter much as long it doesn’t conflict with any view of the apps. In production, uploaded files should be served from a different domain such as Amazon S3.

MEDIA_ROOT is the path to the root directory where the files are getting stored.

Serving Media Files in Development

By default, Django doesn’t serve media files during development( when debug=True).

In order to make the development server serve the media files open the url.py of the project and make the below changes.

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

urlpatterns = [
    path('admin/', admin.site.urls),
    ... ]
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

That’s all now, run the local development server add files in the media root folder and retrieve them from media URL.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Close