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/
.