Django Url для изображения по умолчанию приводит к 404

В настоящее время я работаю над проектом Django с двумя приложениями: проекты и пользователи. Как пользователь, так и проект могут иметь изображение; пользователь имеет изображение профиля, а проект - изображение главной страницы. Если изображение не загружено, то используется изображение по умолчанию. Вот моя проблема

Что я хочу: Изображение по умолчанию, которое будет отображаться, если не загружено ни одно изображение

Что я получаю: Неверная ссылка на изображение профиля по умолчанию, приводящая к 404 ошибке (ссылка на изображение проекта по умолчанию работает нормально)

>

Что я пробовал: Читал старые темы stack overflow, Django docs и гуглил. Насколько я могу судить, это не неправильный каталог медиа, не жестко закодированный url, не ошибка форматирования jinja или неправильно написанная переменная.

Похоже, что проблемы связаны с url изображения профиля.


Сверху:

У меня есть мои медиа-урлы/директории, настроенные как для локальной разработки, так и для производства:

В settings.py:

MEDIA_URL = '/img/'
...
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/img')

В my-django-project/urls.py:

imports...

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.homepage, name='homepage'),
    path('projects/', include('projects.urls')),
    path('profiles/', include('users.urls')),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

Мой статический каталог выглядит следующим образом:

css/
js/
img/--|-featured_images/
      |-profile_images/
      | default.jpeg (this is the default project image)
      | user_default.png (this is the default profile image)

Вот код для изображения профиля (который, похоже, не работает):

file: users/urls.py
imports...

urlpatterns = [
    path('', views.profiles, name='profiles'),
    path('<str:pk>', views.profile, name='profile'),
]

file: users/models.py
...

Class Profile(models.Model):
    ...
    profile_image = models.ImageField(... default='user-default.png', upload_to='profile_images')

file: templates/users/profile.html
...

<img ... src="{{profile.profile_image.url}}"/>

Это ссылка на url ...:8000/img/profiles/user-default.png

Моя проблема заключается в этом поле profiles. Я не уверен, откуда оно берется, и не могу его удалить.

По сравнению с кодом для проекта featured_image ниже, код выше почти полностью совпадает (меняются только названия):

file: projects/urls.py
imports...

urlpatterns = [
    path('', views.projects, name="projects"),
    path('create-project/', views.create_project, name='create_project'),
    path('<str:pk>/', views.project, name="project"),
    path('update-project/<str:pk>/', views.update_project, name='update_project'),
    path('delete-project/<str:pk>/', views.delete_project, name='delete_project'),
]

file: projects/models.py
...

Class Project(models.Model):
    ...
    featured_image = models.ImageField(... default='default.jpeg', upload_to='featured_images')

file: templates/projects/project.html
...

<img ... src="{{project.featured_image.url}}"/>

Это возвращает url ...:8000/img/default.jpg (который является правильной ссылкой на изображение)

Любая помощь или предложения были бы замечательными - я действительно изо всех сил пытаюсь разобраться с этой ошибкой!

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