Django Получение ошибки пути доступа для статических ресурсов

Я использовал Django для настройки пути к аватару по умолчанию в static/images, но система всегда ищет файл аватара по умолчанию в media/images. models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    nickname = models.CharField(max_length=100)
    avatar = models.ImageField(upload_to='avatars/',null=True, blank=True,default='images/默认头像.jpeg')

settings.py

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

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('myapp.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

profile.html

<img src="{% if request.user.profile.avatar %}{{ request.user.profile.avatar.url }}{% else %}{% static "images/默认头像.jpeg" %}{% endif %}" alt="头像" class="avatar-img">

путь к медиа:/Users/cai.wang/PycharmProjects/myweb/media путь к изображению по умолчанию:/Users/cai.wang/PycharmProjects/myweb/static/images/默认头像.jpeg

Информация в журнале Не найдено: /media/images/默认头像.jpeg "GET /media/images/%E9%BB%98%E8%AE%A4%E5%A4%B4%E5%83%8F.jpeg HTTP/1.1" 404 4224

Нужно было обратиться к static/images, чтобы получить изображение, а не обращаться к media/images

Вам нужно добавить статические пути:

urlpatterns = (
    [
        path('admin/', admin.site.urls),
        path('', include('myapp.urls')),
    ]
    + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
)

Но, скорее всего, проблема не в этом, вам нужно поместить 默认头像.jpeg не только в /static/images/, но и в /media/images/.

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