You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django中如何展示除当前登录用户之外的所有系统用户

问题排查及修正方案
  • 未定义变量直接调用:代码中h = User.objects.get(id=pk)的pk变量没有提前定义,运行时会直接抛出NameError异常,且该行逻辑和你要实现的「排除已登录用户」需求无关,可直接删除。
  • 过滤逻辑错误:注释中写的User.objects.filter(id=request.user).exclude(id=request.user)逻辑自相矛盾,先过滤出ID等于当前登录用户的记录再排除同ID的记录,最终返回结果永远是空查询集;同时id字段需要匹配用户ID值,正确写法是取request.user.id而非直接传request.user对象。
  • 未做登录状态校验:如果访问接口的用户是未登录的匿名用户,直接调用request.user.id会抛出属性异常,需要先判断登录状态。
修正后的可运行代码
def get_home_page_url(request):
    # 先获取所有用户
    all_users = User.objects.all()
    # 判断用户是否已登录,已登录则排除当前用户
    if request.user.is_authenticated:
        filtered_users = all_users.exclude(id=request.user.id)
    else:
        # 未登录时直接返回所有用户,可根据业务需求调整
        filtered_users = all_users
    
    args = {
        'user': all_users,
        'filtered_user': filtered_users
    }
    return render(request, 'home.html', args)
模板调用说明

在home.html中遍历filtered_user即可拿到排除了当前登录用户的所有用户列表:

{% for item in filtered_user %}
    <p>{{ item.username }}</p>
{% endfor %}

内容的提问来源于stack exchange,提问作者Sakib ovi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:48:04