通过 User.objects.filter 访问个人资料页面的用户对象
Accessing User objects through User.objects.filter for a profile page
我如何查询 User 模型以获取用户信息,如:用户名、电子邮件、名字和姓氏到他的个人资料中。我想在他的个人资料页面中显示所有这些信息。
如您在 个人资料 视图中所见,我愿意访问用户电子邮件,但我如何查询数据库以在个人资料页面中获取所有这些信息?
def profile(request, pk):
user_profile = User.objects.filter(email=request.user)
context = {'user_profile':user_profile}
return render(request, 'profile.html', context)
个人资料模板:
<p>{{user.email}}</p>
如果您要查找 logged_in 用户详细信息,您已经将其作为请求对象的一部分。因此,您可以在模板中使用以下内容而无需在视图中进行查找:
<p>Username: {{request.user.username}}</p>
<p>Email: {{request.user.email}}</p>
如果您想使用传递给您的视图的 PK 值,以便访问者可以访问另一个用户的个人资料(例如,主键用于标识另一个用户帐户),您可以对其进行查找.正如 Sunderam Dubey 指出的那样,最好的方法是通过 get_object_or_404() 在您的视图中调用
views.py
from django.shortcuts import get_object_or_404
def profile(request, pk):
user = get_object_or_404(User,id=pk)
context = {'user_context':user}
return render(request, 'profile.html', context)
profile.html
<p>Email : {{user_context.email}}</p>
<p>Username : {{user_context.username}}</p>
注意变量对象名称末尾带有 _context。您不必遵循此命名约定,但重要的是我命名的东西 'user_context' 具有相同的名称。
如果您只想访问当前登录的用户信息,那么您不应使用 filter()
,因为它会为您提供查询集并通过我们在模板中 运行 的循环使用。您应该使用 get_object_or_404
[django-doc] 来显示单个对象的数据。如果什么也没找到,它会返回 404。
Views.py
from django.shortcuts import get_object_or_404
def profile(request, pk):
single_user = get_object_or_404(User,pk=pk)
context = {'single_user':single_user}
return render(request, 'profile.html', context)
模板文件
{% if single_user %}
<p>Email : {{single_user.email}}</p>
<p>Username: {{single_user.username}}</p>
<p>first name : {{single_user.first_name}}</p>
<p>last name: {{single_user.last_name}}</p>
{% else %}
<p>user is not coming</p>
{% endif %}
我通过在配置文件视图中执行此操作解决了我的问题:
def profile(request, pk):
user_context = get_object_or_404(User,id=pk)
context = {'user_context':user_context}
return render(request, 'profile.html', context)
我现在可以通过以下方式访问模板中的所有用户信息:
<div class="container">
<div class="row justify-content-center">
<p>Email: {{user.email}}</p>
<br>
<p>Username {{ user.username }}</p>
</div>
</div>
我如何查询 User 模型以获取用户信息,如:用户名、电子邮件、名字和姓氏到他的个人资料中。我想在他的个人资料页面中显示所有这些信息。
如您在 个人资料 视图中所见,我愿意访问用户电子邮件,但我如何查询数据库以在个人资料页面中获取所有这些信息?
def profile(request, pk):
user_profile = User.objects.filter(email=request.user)
context = {'user_profile':user_profile}
return render(request, 'profile.html', context)
个人资料模板:
<p>{{user.email}}</p>
如果您要查找 logged_in 用户详细信息,您已经将其作为请求对象的一部分。因此,您可以在模板中使用以下内容而无需在视图中进行查找:
<p>Username: {{request.user.username}}</p>
<p>Email: {{request.user.email}}</p>
如果您想使用传递给您的视图的 PK 值,以便访问者可以访问另一个用户的个人资料(例如,主键用于标识另一个用户帐户),您可以对其进行查找.正如 Sunderam Dubey 指出的那样,最好的方法是通过 get_object_or_404() 在您的视图中调用
views.py
from django.shortcuts import get_object_or_404
def profile(request, pk):
user = get_object_or_404(User,id=pk)
context = {'user_context':user}
return render(request, 'profile.html', context)
profile.html
<p>Email : {{user_context.email}}</p>
<p>Username : {{user_context.username}}</p>
注意变量对象名称末尾带有 _context。您不必遵循此命名约定,但重要的是我命名的东西 'user_context' 具有相同的名称。
如果您只想访问当前登录的用户信息,那么您不应使用 filter()
,因为它会为您提供查询集并通过我们在模板中 运行 的循环使用。您应该使用 get_object_or_404
[django-doc] 来显示单个对象的数据。如果什么也没找到,它会返回 404。
Views.py
from django.shortcuts import get_object_or_404
def profile(request, pk):
single_user = get_object_or_404(User,pk=pk)
context = {'single_user':single_user}
return render(request, 'profile.html', context)
模板文件
{% if single_user %}
<p>Email : {{single_user.email}}</p>
<p>Username: {{single_user.username}}</p>
<p>first name : {{single_user.first_name}}</p>
<p>last name: {{single_user.last_name}}</p>
{% else %}
<p>user is not coming</p>
{% endif %}
我通过在配置文件视图中执行此操作解决了我的问题:
def profile(request, pk):
user_context = get_object_or_404(User,id=pk)
context = {'user_context':user_context}
return render(request, 'profile.html', context)
我现在可以通过以下方式访问模板中的所有用户信息:
<div class="container">
<div class="row justify-content-center">
<p>Email: {{user.email}}</p>
<br>
<p>Username {{ user.username }}</p>
</div>
</div>