在我的项目中,我有一个 DetailView
,因此用户可以查看他们的个人资料。在这里,我想显示他们的个人资料图片。但是,当我打开浏览器并转到详细信息页面时,没有显示个人资料图片。我的代码如下所示。
models.py:
class User(AbstractUser):
profilePic = models.ImageField(upload_to='profile_pics/', default='static/default-profile.png')
views.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(对于用户
应用):
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 代码),并且在用户首次注册时也会分配给用户。有谁知道为什么这个文件没有显示在浏览器中以及为什么我收到上面显示的错误?谢谢。
最佳答案
您似乎尝试了错误的网址。
当您将它们上传到 profile_pics/
时,上传的所有媒体都位于 profile_pics
目录中,该目录可能应该位于根目录中。
以下正确的网址是:-
http://localhost:8000/media/profile_pics/yourimagename.jpg
关于Django - 图像未显示在网页中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60760529/