[英]Django 2 implement Other user's Profile View
我正在使用 Python(3.7) 和 Django(2.1) 開發一個項目,其中我需要為用戶實現一個視圖來查看其他用戶的個人資料,我已經實現了該視圖,它顯示了個人資料但顯示了個人資料信息。
這是我嘗試過的:
從models.py
:
class ProfileModel(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='profile')
avatar = models.CharField(max_length=500, null=True, blank=True)
about = models.CharField(max_length=1000, null=True)
slogan = models.CharField(max_length=500, null=True)
profile_pic = models.ImageField(default='/assets/images/avatar.png', upload_to='profile_pics', null=True)
def __str__(self):
return self.user.username
從views.py
:
class UserProfile(LoginRequiredMixin, CreateView):
def get(self, request, *args, **kwargs):
username = self.kwargs['username']
user_profile = ProfileModel.objects.filter(user=User.objects.get(username=username))
gigs = Gig.objects.filter(user__username=username, status=True)
print(user_profile.values())
return render(request, 'jobexpertapp/profile.html', {'user_profile': user_profile, 'gigs': gigs,
'name': username})
從templates/profile.html
:
{% if name == user.username %}
#, In this case, I will add a, `edit` button and display other
info
# the info in this case id displaying correctly
{% else %}
# Here I need to display other user's info e.g
<h1> {{ user_profile.slogan }}</h1>
您在查詢中使用了filter
而不是get
,因此它返回一個查詢集。 這就是為什么first
起作用,因為它然后獲得查詢集的第一個結果。
使用get
:
user_profile = ProfileModel.objects.get(user=User.objects.get(username=username))
請注意,這更簡單地拼寫:
user_profile = ProfileModel.objects.get(user__username=username)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.