【发布时间】:2021-03-02 06:13:58
【问题描述】:
我有一个在 Django 3.1 中运行的项目,但它突然开始无法提供媒体文件(用户上传的静态文件),即使我没有更改 settings.py 或其他地方的任何内容。
我的主要 urls.py:
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('cart/', include('cart.urls', namespace='cart')),
path('', include('contacts.urls', namespace='contacts')),
path('customers/', include('customers.urls', namespace='customers')),
path('orders/', include('orders.urls', namespace='orders')),
path('account/', include('account.urls')),
path('', include('catalog.urls', namespace='catalog')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
来自我的 settings.py:
from pathlib import Path
import os
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath( os.path.join(__file__, os.pardir))))
DEBUG = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
我不知道也无法弄清楚错误出在哪里,但 runserver 在尝试加载媒体文件时总是抛出 404,即使静态文件 (CSS/JS) 正在正确提供。
【问题讨论】:
-
文件是否存在于 BASE_DIR/media/ 目录中?
-
是的。我检查了他们是否在那里,而且他们一直都在。上次我启动开发服务器时,它们得到了正确的服务,
标签: python django django-views django-templates