Как отобразить профиль другого пользователя на Django
В настоящее время я пытаюсь сделать страницу для профилей других пользователей. Страница включает в себя раздел для профиля пользователя, который содержит фотографию профиля, имя пользователя, электронную почту и биографию. И еще один раздел для всех сообщений, которые пользователь опубликовал. Но я не могу правильно отобразить раздел профиля. Вот что мне удалось сделать на данный момент
Модуль Profile:
from django.db import models
from django.contrib.auth.models import User
from PIL import Image
# Create your models here.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
bio = models.CharField(max_length=225, blank=True, default='')
def __str__(self) -> str:
return f"{self.user.username}'s Profile"
def save(self):
super().save()
img = Image.open(self.image.path)
if img.height > 300 or img.width > 300:
img.thumbnail((300,300))
img.save(self.image.path)
Модуль Post:
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self) -> str:
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk':self.pk})
view:
class UserProfileView(ListView):
model = Post
template_name = 'blog/user_profile.html'
context_object_name = 'posts'
paginate_by = 5
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return Post.objects.filter(author=user).order_by('-date_posted')
blog/user_profile.html:
А шаблон URL - path('user/<str:username>/', UserProfileView.as_view(), name='user-profile'),