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

Django获取登录用户用户名及关联用户Boards问题求助

解决Django中获取登录用户用户名及对应Boards的问题

嘿,刚上手Django遇到这类问题太正常了!我来一步步帮你理清楚怎么解决~

一、获取登录用户的用户名

Django的认证系统已经帮我们做好了核心工作,只要用户成功登录,你可以直接通过请求对象request.user拿到当前用户的信息:

  • 获取用户名:request.user.username
  • 额外提一句,还能直接获取用户的其他属性,比如邮箱request.user.email、IDrequest.user.id等

⚠️ 重要提醒:为了确保视图只处理已登录用户的请求,记得给视图加上@login_required装饰器,这样未登录用户会自动重定向到登录页面,避免出现AnonymousUser(匿名用户)的报错。

二、用登录用户获取对应的Boards

假设你的Board模型有一个关联用户的外键字段(比如叫owner),示例如下:

# models.py
from django.db import models
from django.contrib.auth.models import User

class Board(models.Model):
    name = models.CharField(max_length=100)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)
    # 其他业务字段...

获取该用户的Boards最直接高效的方式是直接用用户对象过滤,不用绕到用户名(更准确且性能更好):

user_boards = Board.objects.filter(owner=request.user)

如果确实有特殊场景需要通过用户名过滤(不推荐,用户对象本身是更可靠的查询条件),可以这样写:

user_boards = Board.objects.filter(owner__username=request.user.username)

三、关于“错误新增用户模型”的问题

如果你新增了自定义用户模型,但不确定配置是否正确,可以检查这几点:

  1. 在settings.py中必须指定自定义用户模型的路径:
    AUTH_USER_MODEL = '你的应用名.自定义用户模型类名'
    
  2. 所有关联用户的模型字段(外键、一对一)都要引用这个自定义模型,推荐用get_user_model()动态获取,避免硬编码:
    from django.contrib.auth import get_user_model
    User = get_user_model()
    
    class Board(models.Model):
        owner = models.ForeignKey(User, on_delete=models.CASCADE)
    
  3. 如果你其实不需要自定义用户模型,只是误加了,那可以删掉自定义模型,把所有关联改回默认的django.contrib.auth.models.User,然后执行数据库迁移(记得先备份数据!)。

完整视图示例

给你一个整合了上述内容的视图代码参考:

from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Board

@login_required
def my_boards(request):
    # 获取当前登录用户的用户名
    current_username = request.user.username
    # 获取该用户的所有boards
    user_boards = Board.objects.filter(owner=request.user)
    
    # 把数据传递到模板
    context = {
        'username': current_username,
        'boards': user_boards
    }
    return render(request, 'boards/my_boards.html', context)

模板使用小技巧

其实在模板里你也可以直接调用{{ user.username }}来显示用户名,不用特意在视图里把用户名传到context里哦~

内容的提问来源于stack exchange,提问作者Mahdi Jaber

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:21:21