Невозможно установить изображение по умолчанию django

Я создал профиль для пользователя. Я установил все Media и Static. Но когда я установил default и upload_to в поле image, выдает ошибку not found image. Я попробовал все различные пути к изображению, но они тоже не работают. Может кто-нибудь проверить путь для меня. Большое спасибо!

путь в настройках:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/images')
MEDIA_URL = '/media/'

url project:

   urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.IndexPage.as_view(),name='index'),
    path('welcome/',views.WelcomePage.as_view(),name='welcome'),
    path('bye/',views.ByePage.as_view(),name='bye'),
    path('about/',views.AboutPage.as_view(),name='about'),
    path('profile/', include('accounts.urls'))
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

модель:

    class UserInfoCnc(models.Model):
        user = models.OneToOneField(User, on_delete=models.CASCADE)
        profile_pic = models.ImageField(upload_to = 'profile_pics', default='profile_pics/xinlacho.JPG' ,blank=True

показать изображение в html:

<img class='img-thumbnail' src="{{ userinfocnc.profile_pic.url }}" alt="Error load image">

файл media и static в проекте:

enter image description here

Я думаю, если нет изображения, оно должно быть установлено в null=True, с помощью этого вы можете проверить, есть ли изображение, используя 2 варианта:

Вариант 1

<img src=“{{ object.image.url|default:'/media/default_avatar.jpg' }}">

Вариант 2

{% if object.image %}
<img src="{{ object.image.url }}">
{% else %}
<img src="{% static 'default_avatar.jpg' %}">
{% endif %}

Итак, файл images обслуживал файлы, загруженные пользователем, а изображения по умолчанию были сохранены в папке media. Все, что вам нужно сделать, это изменить STATIC на MEDIA.

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

Если вы используете UpdateView для изменения изображений пользователя. Вы должны добавить enctype="multipart/form-data" в <form action="" method="post" enctype="multipart/form-data" > и UpdateView обработает все остальное.

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