Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django信号配置文件创建问题_Django_Django Models_Django Views - Fatal编程技术网

Django信号配置文件创建问题

Django信号配置文件创建问题,django,django-models,django-views,Django,Django Models,Django Views,我在我的应用程序上创建了一个用户配置文件部分,当用户在我的注册页面上创建一个帐户时,我试图实现配置文件的自动创建,但是自从我添加了信号和接收功能后,我现在收到了以下错误。如果我删除信号中的两个定义,注册表将再次正常工作,因此信号中的某些内容导致此操作失败 基数为10的int的文本无效: 这是我的观点 from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_requ

我在我的应用程序上创建了一个用户配置文件部分,当用户在我的注册页面上创建一个帐户时,我试图实现配置文件的自动创建,但是自从我添加了信号和接收功能后,我现在收到了以下错误。如果我删除信号中的两个定义,注册表将再次正常工作,因此信号中的某些内容导致此操作失败

基数为10的int的文本无效:

这是我的观点

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from users.forms import UserRegisterForm
from django.core.mail import send_mail


def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Your account {username} has been created, you can now login !')
            return redirect('login')
    else:
        form = UserRegisterForm()
        messages.warning(request,(form._errors))
    return render(request, 'users/register.html', {'form': form})


@login_required
def profile(request):
    return render(request, 'users/profile.html')


@login_required
def dashboard(request):
    return render(request, 'users/dashboard.html')    

Signals.py

from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile


@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)


@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()

回溯

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/register/

Django Version: 2.2.9
Python Version: 3.7.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'forms.apps.FormsConfig',
 'crispy_forms',
 'users.apps.UsersConfig',
 'points.apps.PointsConfig']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\missinglink\users\views.py" in register
  12.             form.save()

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\forms.py" in save
  130.             user.save()

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\auth\base_user.py" in save
  66.         super().save(*args, **kwargs)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save
  741.                        force_update=force_update, update_fields=update_fields)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save_base
  790.                 update_fields=update_fields, raw=raw, using=using,

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\dispatch\dispatcher.py" in send
  175.             for receiver in self._live_receivers(sender)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\dispatch\dispatcher.py" in <listcomp>
  175.             for receiver in self._live_receivers(sender)

File "C:\missinglink\users\signals.py" in create_profile
  10.         Profile.objects.create(user=instance)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in create
  422.         obj.save(force_insert=True, using=self.db)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save
  741.                        force_update=force_update, update_fields=update_fields)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in save_base
  779.                 force_update, using, update_fields,

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _save_table
  870.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\base.py" in _do_insert
  908.                                using=using, raw=raw)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in _insert
  1186.         return query.get_compiler(using=using).execute_sql(return_id)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
  1367.             for sql, params in self.as_sql():

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in as_sql
  1311.                 for obj in self.query.objs

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in <listcomp>
  1311.                 for obj in self.query.objs

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in <listcomp>
  1310.                 [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in prepare_value
  1251.             value = field.get_db_prep_save(value, connection=self.connection)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\__init__.py" in get_db_prep_save
  793.         return self.get_db_prep_value(value, connection=connection, prepared=False)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\__init__.py" in get_db_prep_value
  788.             value = self.get_prep_value(value)

File "C:\Users\rzuchowski\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
  1825.         return int(value)

Exception Type: ValueError at /register/
Exception Value: invalid literal for int() with base 10: ''

您的接收者采用了错误的论点:

@receiver(post_save, sender=User)
def create_profile(instance, created, **kwargs):  # no sender argument!
    if created:
        Profile.objects.create(user=instance)
实例已传递给参数发送方,因此实例为空


请注意,您的第二个接收器也在每次运行,包括在创建时在第一个接收器中添加else以执行您想要的操作。它似乎是一个无用的接收器无论如何,为什么你要保存配置文件,如果用户被更改?关系仍然保持。

您的接收者使用了错误的参数:

@receiver(post_save, sender=User)
def create_profile(instance, created, **kwargs):  # no sender argument!
    if created:
        Profile.objects.create(user=instance)
实例已传递给参数发送方,因此实例为空


请注意,您的第二个接收器也在每次运行,包括在创建时在第一个接收器中添加else以执行您想要的操作。它似乎是一个无用的接收器无论如何,为什么你要保存配置文件,如果用户被更改?关系仍然保持。

我可以从“管理”部分手动添加配置文件。您可以将配置文件模型代码添加到问题中吗?您的第二个接收器将在每次保存时运行,用于创建和更新。因此,它也会在创建用户时运行。我猜这就是你的问题所在。如果未创建,您可以添加配置文件:检查您的第二个接收器或使用单个接收器,在已创建的标记上使用if子句执行不同的操作。我可以从管理部分手动添加配置文件。您可以将配置文件模型代码添加到问题中吗?您的第二个接收器将在每次保存时运行,用于创建和更新。因此,它也会在创建用户时运行。我猜这就是你的问题所在。如果未创建,您可以添加一个:检查您的第二个接收器或使用单个接收器,使用已创建标记上的if子句执行不同的操作您是否覆盖了配置文件模型的保存方法?我成功了,这是我的模型规则的一个问题。您是否覆盖了配置文件模型的保存方法?我成功了,这是一个关于我对模型的规则的问题。