Как сделать просмотр профиля пользователя?
Поскольку я новичок в django, я впервые пытаюсь создать профиль пользователя. И я не знаю, как сделать представление профиля со ссылкой на него. Не могли бы вы привести мне пример
models.py
class CustomUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
username = models.CharField(max_length = 40, unique=True)
is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
date_joined = models.DateTimeField(default=timezone.now)
slug = AutoSlugField(populate_from = 'username', null=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
objects = CustomUserManager()
class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
def __str__(self):
return self.email
def get_absolute_url(self):
return reverse('profile', args=[str(self.slug)])
class UserProfile(models.Model):
user = models.OneToOneField(CustomUser, on_delete = models.CASCADE, null = True, db_constraint=False)
avatar = ProcessedImageField(
upload_to = 'avatar',
format = "JPEG",
default = "avatar/empty_avatar.jpg",
processors = [ResizeToFit(250, 200)],
options = {'quality': 90},
blank = True,
null = True,
)
description = models.TextField(default = '', blank = True, null = True)
slug = AutoSlugField(populate_from = 'user', null=True)
class Meta:
verbose_name = 'Профиль'
verbose_name_plural = 'Профили'
@receiver(post_save, sender=CustomUser)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
@receiver(post_save, sender=CustomUser)
def save_user_profile(sender, instance, **kwargs):
try:
instance.userprofile.save()
except ObjectDoesNotExist:
UserProfile.objects.create(user=instance)
forms.py
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = get_user_model()
fields = ('email', 'username',)
class CustomUserChangeForm(UserChangeForm):
class Meta:
model = get_user_model()
fields = ('email', 'username',)
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ('avatar', 'description',)
Я не знаю, как получить правильный набор запросов в файле views.py
class UserProfileUpdate(generic.UpdateView, generic.FormView):
template_name = 'users/profile.html'
form_class = UserProfileForm
def form_valid(self, form):
response = form.save(commit = False)
response.save()
return super(UserProfileUpdate, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super(UserProfileUpdate, self).get_context_data(**kwargs)
context['user'] = CustomUser.objects.get(slug = slug)
context['profile'] = UserProfile.objects.get(user = context['user'])
return context
Я также хочу, чтобы пользователи могли просматривать профили других пользователей, а не только свой собственный