如何向用户展示心愿单为空?Django视图无报错但页面显示源代码如何解决
Django wishlist视图页面展示源代码解决方案
核心根因及修复
问题根源是render函数传参错误:
Django的render函数参数规则为render(request, 模板路径, 上下文字典, 内容类型),你在返回时拆分了两个独立字典传入:
return render(request, 'wishlist/wishlist.html', {'wishlist': context}, {'error': error})
此处第二个字典{'error': error}被当作content_type(响应内容类型)参数传入,导致响应头的内容类型被错误修改,浏览器将HTML识别为纯文本,直接展示源代码。
修复方式:将所有上下文变量合并为同一个字典传入即可:
return render(request, 'wishlist/wishlist.html', {'wishlist': context, 'error': error})
其他潜在问题修复
- 变量未定义问题:
error变量仅在「用户已登录且List存在对应用户数据」的分支中被赋值,其余场景(用户未登录、用户已登录无对应List数据)调用error会触发NameError,建议在函数开头给error设置默认值,或者在所有分支补充赋值。 - 逻辑冗余问题:已登录用户的分支中,无论
List是否存在,context都被赋值为同一查询结果,原有判断逻辑无实际作用,且错误地在列表存在时赋值空列表提示,建议调整为:
def wishlist(request): error = '' context = None if request.user.is_authenticated: user = request.user.id context = List.objects.filter(user=user) if not context.exists(): error = 'Your wishlist is empty' else: context = WishList(request) return render(request, 'wishlist/wishlist.html', {'wishlist': context, 'error': error})
内容的提问来源于stack exchange,提问作者Inexpli
相关产品推荐
相关产品推荐

