
[英]How can I see user information other than the logged-in user in Django?
[英]how can i display other user information in django
我正在创建一个用户可以查看其他用户个人资料的网站,但问题是当用户输入另一个用户个人资料时,它会显示他的个人信息
这是urls.py文件代码
urlpatterns = [
path('user/<str:username>', UserPostListView.as_view(), name='user-posts'),
]
这是view.py文件代码
class UserPostListView(ListView):
model = Post = Profile
template_name = 'website/user_posts.html'
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return Post.objects.filter(author=user)
def get_username_field(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return Profile.objects.filter(user=user)
这是models.py文件
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
age = models.IntegerField(verbose_name='Ålder', default=15,
blank=True)
def get_absolute_url(self):
return reverse('user_posts', kwargs={'pk': self.pk})
def __str__(self):
return f'{self.user.username} Profile'
user_posts.html文件
{{ user.get_full_name }}
{{ user.profile.age }}
{{ view.kwargs.username }}
在模板中,它显示用户名,但它没有显示名称和年龄。
user
始终是当前登录的用户。 您的视图使用Profile模型,因此您可以访问profile
或object
。
{{ profile.user.get_full_name }}
{{ profile.age }}
请注意,您的get_username_field
方法永远不会被调用,也不会执行任何操作; 你应该删除它。
另请注意,将age
作为整数存储在数据库中并不是一个好主意。 这意味着你每年必须更新它,因为人们有一个变老的奇怪习惯...更好地存储出生日期,并有一个方法来显示年龄。
首先,你的get_username_field是没用的。
在你的views.py中,
class UserPostListView(ListView):
model = Profile
template_name = 'website/user_posts.html'
context_object_name = 'user_content'
allow_empty = False #this will show 404 if the username does not exists
def get_queryset(self):
return User.objects.filter(username=self.kwargs['username'])
# you can do it in one line now
现在以html显示,
{% for user in user_content %}
{{user.get_full_name}}
# rest of your code
{% endfor %}
您也可以用与上面相同的方式显示该特定用户的帖子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.