Django为用户信号创建配置文件 [英] Django create profile for user signal
问题描述
im试图使用信号为用户帐户创建配置文件,但是在编写代码后根本无法创建
im trying to create profile for user account using signals but after writing the codes is not creating at all
Django 3.0.5
Django 3.0.5
users/models.py
users/models.py
from django.db import models
from django.contrib.auth.models import User
from PIL import Image
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(default='default.jpg', upload_to='profile_pics')
def __str__(self):
return f'{self.user.username} Profile'
def save(self):
super().save()
img = Image.open(self.profile_image.path)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
img.save(self.profile_image.path)
users/signals.py
users/signals.py
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
users/apps.py
users/apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
我检查了Internet上的所有选项,但无法完成这项工作,可以提供任何帮助,也许我的代码中缺少某些内容
i check all the option on internet , but cant make this work , can any one help, maybe i missing something in my codes
settings.py
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users',
'courses',
'crispy_forms',
]
我可以在apps.py中看到此消息:
i can see this message in apps.py:
未使用的导入语句"import users.signals"
和signal.py中:未使用参数发件人"值
and in signals.py: Parameter 'sender' value is not used
未使用参数'** kwargs'
使用PyCharm专业版
Using PyCharm Proffesional
推荐答案
您可以将 app的配置
添加到两个文件之一.
You can add app's config
to either of two files.
- 如上所述,在您的
settings.py
文件的INSTALLED_APPS
中.
OR
- 在您相关的
app
的__ init __.py
文件中,如下所示(在本示例中,相关的应用程序是users
):default_app_config ='users.apps.UsersConfig'
- In your related
app
's__init__.py
file like this (in this example, the related app isusers
):default_app_config = 'users.apps.UsersConfig'
这篇关于Django为用户信号创建配置文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!