Как использовать статические файлы и медиа вместе

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

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

STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'static/'
STATICFILES_DIRS = BASE_DIR / 'static/

Я написал это для настройки. Как я должен изменить urls.py?

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('pages.urls')),
    path('users/',include('users.urls')),
    path('users/',include('django.contrib.auth.urls')),
    ] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

Я написал это так, но как мне добавить статические урлы?

Вы складываете два списка, созданные функциями static, так:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pages.urls')),
    path('users/', include('users.urls')),
    path('users/', include('django.contrib.auth.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Обратите внимание, что Django не обслуживает статические или мультимедийные файлы в производстве, и что вам придется настроить nginx, apache или другой веб-сервер, чтобы сделать это.

Для включения статических URL можно использовать функцию static() из модуля django.conf.urls.static в Django. Эта функция принимает два аргумента: префикс URL для статических файлов и расположение статических файлов на сервере. Вы можете использовать параметры STATIC_URL и STATIC_ROOT, которые вы уже определили в вашем файле settings.py, чтобы указать префикс URL и местоположение статических файлов.

Вот пример того, как вы можете включить статические URL в список urlpatterns:

from django.conf.urls.static import static

urlpatterns = [
    # ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Для включения медиа URL можно использовать ту же функцию static(), но при этом необходимо использовать параметры MEDIA_URL и MEDIA_ROOT, которые вы также определили в файле settings.py. Вот пример того, как вы можете включить медиа URL в список urlpatterns:

from django.conf.urls.static import static

urlpatterns = [
    # ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Помните, что функция static() должна быть добавлена в список urlpatterns в конце, после всех остальных шаблонов URL. Это связано с тем, что Django обрабатывает шаблоны URL в порядке их перечисления, и вы хотите, чтобы статические и медиа URL были проверены последними.

Вернуться на верх