在django

时间:2018-06-09 21:03:48

标签: django

我正在尝试为登录用户获取first_name和last_name。我可以得到它们,但它们显示为:

<QuerySet [{'first_name': 'steven'}]>

我想只显示史蒂文

这是视图功能:

def user_profile(request):
username = None
if request.user.is_authenticated():
    username = request.user.username
    pk = request.user.id
    first_name = MyUser.objects.filter(pk=pk).values('first_name')


context = {
    'username': username,
    'pk' :pk,
    'first_name': first_name,
}

return render(request, 'path/to/user_profile.html', context)

在模板文件中:

{{first_name}}

1 个答案:

答案 0 :(得分:2)

您使其变得相当复杂:request.user User对象。因此,您可以直接从中获取.first_name.last_name

def user_profile(request):
    if request.user.is_authenticated():
        context = {
            'username': request.user.username,
            'pk': request.user.pk,
            'first_name': request.user.first_name,
        }
    else:
        context = {
            'username': None,
            'pk' : None,
            'first_name': None,
        }

    return render(request, 'path/to/user_profile.html', context)

所以这个实例已经已经加载了。当然你可以用查询来获取它。但为什么重复工作?