Django:试图将用户的名字传递给模板,但却得到了一个奇怪的代码

Django: trying to pass users first name to template but getting a weird code instead

在 views.py 我有:

def loggedin(request):
   return render_to_response('theDB/loggedin.html', {'first_name': User.first_name })

loggedin.html我有:

<h2>Hi {{ first_name }} you are now logged in!</h2>
<p>Click <a href="/accounts/logout/">here</a> to logout.</p>"

这是我在浏览器中得到的:

Hi "<"django.db.models.query_utils.DeferredAttribute object at 0x0000019FD7AA7AC8> you are now logged in!
Click here to logout.

我没有看到用户的名字,而是看到了那个奇怪的东西(一个 unicode 对象?)

User 是模型 class,不是当前登录的用户。您可以在视图中使用 request.user

def loggedin(request):
    return render(request, 'theDB/loggedin.html', {'first_name': request.user.first_name)

注意我使用了 render 快捷方式,推荐使用 render_to_response 快捷方式。