Django为用户信号创建配置文件 [英] Django create profile for user signal

查看:54
本文介绍了Django为用户信号创建配置文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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.

  1. 如上所述,在您的 settings.py 文件的 INSTALLED_APPS 中.

OR

  1. 在您相关的 app __ init __.py 文件中,如下所示(在本示例中,相关的应用程序是 users ): default_app_config ='users.apps.UsersConfig'
  1. In your related app's __init__.py file like this (in this example, the related app is users): default_app_config = 'users.apps.UsersConfig'

这篇关于Django为用户信号创建配置文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆