首页 > 解决方案 > Django - 图片未显示在网页中

问题描述

在我的项目中,我有一个DetailView,因此用户可以查看他们的个人资料。在这里,我想显示他们的头像。但是,当我打开浏览器并转到详细信息页面时,没有显示个人资料图片。我的代码如下所示。

模型.py

class User(AbstractUser):
    profilePic = models.ImageField(upload_to='profile_pics/', default='static/default-profile.png')

视图.py

class DetailProfile(generic.DetailView):
    model = User
    # Template that a users profile picture should be displayed in
    template_name = 'detail_profile.html'

detail_profile.html

<img width="200px"  src="{{ user.profilePic.url }}" alt="">

浏览器返回的错误

GET http://localhost:8000/media/static/default-profile.png 404 (Not Found)

urls.py(用于users应用程序)

urlpatterns = [
    path('signup/', views.signup, name='signup'),
    path('login/', views.login, name='login'),
    path('resetone/', views.resetone, name='resetone'),
    path('resetwo/', views.resetwo, name='resetwo'),
    path('viewprofile/<int:pk>', views.DetailProfile.as_view(), name='detail_profile'),
]  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

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

设置.PY

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

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

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

目前,所有用户都将文件default-profile.png分配给他们的个人资料图片,但是稍后我将实现用户更改他们的个人资料图片的功能。

default-profile.png存储在静态文件夹中(检查我上面的 settings.py 代码),并且在用户第一次注册 时也分配给他们。有谁知道为什么这个文件没有显示在浏览器中,为什么我会返回上面显示的错误?谢谢你。

标签: django

解决方案


看来您一直在尝试错误的网址。当您将它们上传到 时profile_pics/,所有上传的媒体都驻留在profile_pics目录中,该目录可能应该在根目录中。以下内容的正确网址是:- http://localhost:8000/media/profile_pics/yourimagename.jpg


推荐阅读