Я создал сигнал, который создает профиль при создании пользователя. Ранее этот же код работал нормально в других проектах. Здесь я не знаю, что я делаю неправильно, что это не работает и не создает профиль для созданных пользователей. Это сигнал.
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
print(instance)
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
Все операции импорта выполнены правильно, и я импортировал их в свое приложение:
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
В случае, если вы хотите посмотреть модель профиля:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
def __str__(self):
return "{} Profile".format(self.user.username)
Поскольку я создал сигнал, для всех вновь создаваемых пользователей следует добавить default.jpg
в качестве изображения профиля по умолчанию.
Но если я создаю нового пользователя, войдите в систему, затем перейдите на страницу профиля, на которой будет показано что-то вроде этого:
и если я зайду в админ и добавлю эту фотографию профиля вручную, она будет работать нормально И наконец, я добавил следующие настройки в urls.py
:
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
Пожалуйста, помогите мне исправить это, это было 3 часа, я попробовал все возможные способы, но не мог заставить это работать. Спасибо за вашу помощь.
редактирование:
template
<div class="media">
<img class="rounded-circle account-img" src="{{ user.profile.image.url }}">
<div class="media-body">
<h2 class="account-heading">{{ user.username }}</h2>
<p class="text-secondary">{{ user.email }}</p>
</div>
</div>
edit-2: default.jpg
добавлено здесь!