Django中头像上传成功但无法显示的问题求助
Django头像上传后无法在页面显示的解决方案
问题现象
- 头像可正常上传并存储到数据库,控制台通过
print(profile.profile_picture)能正确输出头像路径 - 页面模板中
{% if profile.profile_picture %}无法检测到头像存在,头像预览图也无法显示
核心原因
视图函数profile在渲染模板时,仅传递了form变量到上下文,未将profile对象传入模板。模板中使用profile.profile_picture调用对象属性,但模板上下文里不存在profile变量,导致判断条件始终不成立。
解决方案
修改views.py中的render语句,将profile对象加入到模板上下文:
修改后的views.py代码
@login_required def profile(request): profile, created = Profile.objects.get_or_create(user=request.user) print(profile.profile_picture) if request.method == 'POST': form = ProfileForm(request.POST, request.FILES, instance=profile) if form.is_valid(): form.instance.user = request.user form.save() return redirect('base:profile') else: form = ProfileForm(instance=profile) # 新增profile变量传入模板 return render(request, 'profile.html', {'form': form, 'profile': profile})
额外验证点
- 确认项目
settings.py中已正确配置媒体文件路径:
MEDIA_ROOT = BASE_DIR / 'media' MEDIA_URL = '/media/'
- 确保项目根目录下已创建
media/profile_pics文件夹,且具备读写权限
内容的提问来源于stack exchange,提问作者KnewJams
相关产品推荐
相关产品推荐

