django - 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 代码),并且在用户第一次注册 时也分配给他们。有谁知道为什么这个文件没有显示在浏览器中,为什么我会返回上面显示的错误?谢谢你。
解决方案
看来您一直在尝试错误的网址。当您将它们上传到 时profile_pics/
,所有上传的媒体都驻留在profile_pics
目录中,该目录可能应该在根目录中。以下内容的正确网址是:-
http://localhost:8000/media/profile_pics/yourimagename.jpg
推荐阅读
- java - Spring 找不到 bean xml 配置文件:“无法从相对位置导入 bean 定义”
- css - 如何隐藏没有 id 或类的元素数据绑定
- python-3.x - Kepp 在运行 model.fit() 时收到 ValueError 错误类型
- c# - 如何将两个 SerializeObject 转换为一个 SerializeObject
- excel - 查找和替换 VBA
- python - 在函数中计算返回的钱并返回一个字典,其中货币值作为键,金额作为值
- r - 在日期间隔或 NA 内过滤观察结果
- r - 固定效果 logit:R 中调整后的 r square-bife 包
- python - 寻找零和的三元组
- qt - QML 使用类型 int 或 real