mar*_*24n 3 django signals user-profile
我尝试使用信号为用户帐户创建配置文件,但编写代码后根本没有创建
姜戈3.0.5
用户/模型.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)
Run Code Online (Sandbox Code Playgroud)
用户/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()
Run Code Online (Sandbox Code Playgroud)
用户/apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
Run Code Online (Sandbox Code Playgroud)
我检查了互联网上的所有选项,但无法完成这项工作,任何人都可以帮忙,也许我在代码中遗漏了一些东西
设置.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',
]
Run Code Online (Sandbox Code Playgroud)
我可以在 apps.py 中看到这条消息:
未使用的导入语句“导入用户.信号”
并在 Signals.py 中: 未使用参数“sender”值
未使用参数“**kwargs”值
使用 PyCharm 专业版
小智 5
代替
INSTALLED_APPS = [
...
'users',
...
]
Run Code Online (Sandbox Code Playgroud)
为了
INSTALLED_APPS = [
...
'users.apps.UsersConfig',
...
]
Run Code Online (Sandbox Code Playgroud)
如果您没有指定应用程序配置类的路径,Django 将使用文档https://docs.djangoproject.com/en/3.0/ref/applications/中提到的基础类。因此,您的配置未被使用,这导致在应用程序注册期间未导入信号文件,从而导致信号未注册。
| 归档时间: |
|
| 查看次数: |
5391 次 |
| 最近记录: |