Django 5 для начинающих

Прогресс по курсу:  9/1004

7.4 Профили пользователей и пользовательские поля модели User
4 из 8 шагов пройдено
0 из 15 баллов  получено

Загруженные пользователем файлы и работа с изображениями

При работе с медиафайлами в Django нам нужно изменить некоторые настройки, чтобы хранить файлы локально и обслуживать их по мере необходимости.

В частности, нам нужно установить MEDIA_URL и MEDIA_ROOT в настройках.

  • MEDIA_ROOT: полный путь к каталогу, в котором хранятся загруженные файлы. Обычно мы храним такие файлы, создавая каталог внутри базового каталога проекта.

  • MEDIA_URL: базовый URL-адрес для обслуживания медиафайлов. Это то, что позволяет нам получать доступ к мультимедиа через наш веб-браузер.

Поэтому в settings.py добавим следующий код:

MEDIA_ROOT = BASE_DIR/'media'
MEDIA_URL = '/media/'

Теперь мы должны настроить urls.py проекта для обслуживания загруженных пользователем медиафайлов во время разработки (когда debug=True).

Для этого изменим код в mysite/urls.py:

from django.urls import path, include
from django.contrib import admin
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap
from django.conf import settings
from django.conf.urls.static import static

sitemaps = {
    'posts': PostSitemap,
}

urlpatterns = [
                  path('admin/', admin.site.urls),
                  path('', include('blog.urls', namespace='blog')),
                  path('sitemap.xml', sitemap, {'sitemaps': sitemaps},
                       name='django.contrib.sitemaps.views.sitemap'),
                  path("accounts/", include("accounts.urls")),
                  path("accounts/", include("django.contrib.auth.urls")),
              ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Теперь мы можем добавлять файлы в корневую папку мультимедиа, и Django будет обслуживать их из URL-адреса мультимедиа:

Как вы можете видеть на изображении выше, изображение профиля, которое загружают пользователи, будет хранится внутри /media/profile_images/.

Изображение профиля по умолчанию, которое предоставляется пользователям, находится внутри /media/, поэтому поместите любое изображение по умолчанию, которое вы хотите, в этот каталог с именем default.jpg.

В качестве примера вы можете использовать данное изображение - https://disk.yandex.ru/i/4zy-Lc1ZE2dhhw.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

В качестве примера вы можете использовать данное изображение

Изменен Anonymous 450292901