Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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错误:应为str、bytes或os.PathLike对象,而不是NoneType_Django_Django Allauth_Avatar - Fatal编程技术网

保存化身时发生Django错误:应为str、bytes或os.PathLike对象,而不是NoneType

保存化身时发生Django错误:应为str、bytes或os.PathLike对象,而不是NoneType,django,django-allauth,avatar,Django,Django Allauth,Avatar,清理的_数据['avatar'](在forms.py中)有错误:应为str、bytes或os.PathLike对象,而不是NoneType 当我使用头像的图像登录时,会出现此错误 我正在使用Django allauth,但不习惯。。。。因此,我添加了一个头像字段,它出现在表单中的sign_中,但我在提交时发现了错误 这是我的代码:models.py from django.db import models from django.contrib.auth.models import Abstra

清理的_数据['avatar'](在forms.py中)有错误:应为str、bytes或os.PathLike对象,而不是NoneType

当我使用头像的图像登录时,会出现此错误

我正在使用Django allauth,但不习惯。。。。因此,我添加了一个头像字段,它出现在表单中的sign_中,但我在提交时发现了错误

这是我的代码:models.py

from django.db import models
from django.contrib.auth.models import AbstractUser


def get_path_name(instance, filename):
    path = 'media/avatar/'
    name = instance.user.id + "-" + instance.user.email
    path = path + name
    return path

# custom User model
class CustomUser(AbstractUser):
    avatar = models.ImageField(upload_to= get_path_name, blank=True, null=True)
我的表格:

from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.core.files.images import get_image_dimensions
from django import forms

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = get_user_model()
        fields = ('email', 'username', 'avatar')

    def clean_avatar(self):
        avatar = self.cleaned_data['avatar']

        try:
            w, h = get_image_dimensions(avatar)

            # validate dimensions
            max_width = max_height = 100
            if w > max_width or h > max_height:
                raise forms.ValidationError(
                    u'Please use an image that is '
                    '%s x %s pixels or smaller.' % (max_width, max_height))

            # validate content type
            main, sub = avatar.content_type.split('/')
            if not (main == 'image' and sub in ['jpeg', 'pjpeg', 'gif', 'png']):
                raise forms.ValidationError(u'Please use a JPEG, '
                                            'GIF or PNG image.')

            # validate file size
            if len(avatar) > (20 * 1024):
                raise forms.ValidationError(
                    u'Avatar file size may not exceed 20k.')

        except AttributeError:
            """
            Handles case when we are updating the user profile
            and do not supply a new avatar
            """
            pass

        return avatar

class CustomUserChangeForm(UserChangeForm):
    class Meta:
        model = get_user_model()
        fields = ('email', 'username', 'avatar')
我的模板:

{% extends '_base.html' %}
{% load crispy_forms_tags %}

{% block title %}

{% endblock title %}

{% block content %}
    <h2>Sign Up</h2>
    <form method="post">
        {% csrf_token %}
        {{ form|crispy }}
        <button class="btn btn-success" type="submit">Sign Up</button>
    </form>
{% endblock content %}
我已经检查了迁移是否按照我在数据库中看到的字段工作。但当然,空du会导致以前的错误

我还有一个问题是,头像字段没有出现在/admin/change/user中,但我将该字段放在CustomUserChangeForm(UserChangeForm)中:

这是我的admin.py:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth import get_user_model


from .forms import CustomUserCreationForm, CustomUserChangeForm

CustomUser = get_user_model()

class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ['email', 'username', 'avatar']

admin.site.register(CustomUser, CustomUserAdmin)
错误回溯:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/signup/

Django Version: 3.1.2
Python Version: 3.7.7
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'bootstrap4',
 'crispy_forms',
 'allauth',
 'allauth.account',
 'django.contrib.sites',
 'accounts',
 'home']
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 (most recent call last):
  File "/Users/hima/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/hima/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/views/decorators/debug.py", line 89, in sensitive_post_parameters_wrapper
    return view(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 215, in dispatch
    return super(SignupView, self).dispatch(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 81, in dispatch
    **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 193, in dispatch
    **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 103, in post
    if form.is_valid():
  File "/Users//hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 177, in is_valid
    return self.is_bound and not self.errors
  File "/Users//hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 172, in errors
    self.full_clean()
  File "/Users//hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 374, in full_clean
    self._clean_fields()
  File "/Users/hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 395, in _clean_fields
    value = getattr(self, 'clean_%s' % name)()
  File "/Users//hima/accounts/forms.py", line 15, in clean_avatar
    w, h = get_image_dimensions(avatar)
  File "/Users/hima/venv/lib/python3.7/site-packages/django/core/files/images.py", line 47, in get_image_dimensions
    file = open(file_or_path, 'rb')

Exception Type: TypeError at /accounts/signup/
Exception Value: expected str, bytes or os.PathLike object, not NoneType

添加您的完整错误跟踪刚刚共享它…看起来像是
self。已清理的_数据['avatar']
正在返回值
None
是,但不知道为什么…在self中。数据['avatar']我有一个字符串值是signature.png
Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/accounts/signup/

Django Version: 3.1.2
Python Version: 3.7.7
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'bootstrap4',
 'crispy_forms',
 'allauth',
 'allauth.account',
 'django.contrib.sites',
 'accounts',
 'home']
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 (most recent call last):
  File "/Users/hima/venv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/hima/venv/lib/python3.7/site-packages/django/core/handlers/base.py", line 179, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/utils/decorators.py", line 43, in _wrapper
    return bound_method(*args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/views/decorators/debug.py", line 89, in sensitive_post_parameters_wrapper
    return view(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 215, in dispatch
    return super(SignupView, self).dispatch(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 81, in dispatch
    **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 193, in dispatch
    **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/Users//hima/venv/lib/python3.7/site-packages/allauth/account/views.py", line 103, in post
    if form.is_valid():
  File "/Users//hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 177, in is_valid
    return self.is_bound and not self.errors
  File "/Users//hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 172, in errors
    self.full_clean()
  File "/Users//hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 374, in full_clean
    self._clean_fields()
  File "/Users/hima/venv/lib/python3.7/site-packages/django/forms/forms.py", line 395, in _clean_fields
    value = getattr(self, 'clean_%s' % name)()
  File "/Users//hima/accounts/forms.py", line 15, in clean_avatar
    w, h = get_image_dimensions(avatar)
  File "/Users/hima/venv/lib/python3.7/site-packages/django/core/files/images.py", line 47, in get_image_dimensions
    file = open(file_or_path, 'rb')

Exception Type: TypeError at /accounts/signup/
Exception Value: expected str, bytes or os.PathLike object, not NoneType