Я создаю веб-сайт, на котором есть домашняя страница, где все пользователи могут видеть посты других пользователей, и я хочу, чтобы пользователи могли видеть свои собственные посты в своем профиле и видеть посты других людей, когда они посещают свой профиль. Как мне это сделать?
Я попытался отфильтровать сообщения, но проблема в том, что вошедший в систему пользователь может видеть свои сообщения на странице своего профиля, но когда он / она посещает другого пользователя, он видит свои собственные сообщения на странице этой пользователя
это мои взгляды
class ProfileView(TemplateView):
template_name = 'Profile/Profile.html'
#queryset = Posts.objects.all()
@login_required
def view_profile(self,request, pk=None):
if pk:
user = User.objects.get(pk=pk)
posts = User.posts.objects.get(pk=pk)
else:
user = request.user
#args = {'user': request.user}
#if pk:
posts = User.posts.objects.all().order_by('-date')
return render(request,('Profile/Profile.html'), {'user': user , 'posts':posts })
def get(self, request, pk=None):
#form = HomeForm()
#posts = Post.objects.all().values('user') #order_by('-date')
posts = Post.objects.filter(user=request.user.id).order_by('-date')
users = User.objects.exclude(id=request.user.id)
if pk:
posts = Post.objects.get()#.order_by('-date')
#user = User.posts.get(request, pk)
else:
user = request.user
#friend = Friend.objects.get(current_user=request.user)
#friends = friend.users.all()
args = { 'posts': posts, 'users': users,
}
return render(request, self.template_name, args)
это мой профиль.html
{% for post in posts %}
<div class="row" style="width: 18rem; height:18rem; display:table-row" >
<div class=" card border-grey row mb-3 shadow border-bottom-0" >
<div class="card-header " >
<!-- <a class="mr-auto " href="{% url 'Profile:view_profile_with_pk' pk=user.pk %}"> <b>{{ post.user.username }} </b> </a>-->
</div>
<div class="card-body ">
{% if post.image %}
<p class="card-text border-dark" >
<img src="{{ post.image.url }}" class="mw-100 rounded border-dark" style="width: 20.24rem; ">
</p>{% endif %}
</div>
<div class="card-footer bg ">
</div>
</div>
{% endfor %}
</div>