Объект 'User' не является подписываемым : Django

Данные хранятся в базе данных вместе со следующей ошибкой.

ОШИБКА

TypeError at /auth/email-register
'User' object is not subscriptable
Request Method: POST
Request URL:    http://127.0.0.1:8000/auth/email-register
Django Version: 3.2.6
Exception Type: TypeError
Exception Value:    
'User' object is not subscriptable
Exception Location: C:\xampp\htdocs\Projects\Barter\Authentication\views.py, line 72, in post
Python Executable:  C:\Users\Qasim Iftikhar\anaconda3\python.exe
Python Version: 3.8.5
Python Path:    
['C:\\xampp\\htdocs\\Projects\\Barter',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\python38.zip',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\DLLs',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\lib',
 'C:\\Users\\Qasim Iftikhar\\anaconda3',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\lib\\site-packages',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\lib\\site-packages\\win32',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\lib\\site-packages\\win32\\lib',
 'C:\\Users\\Qasim Iftikhar\\anaconda3\\lib\\site-packages\\Pythonwin']
Server time:    Sun, 05 Sep 2021 17:46:29 +0000

CDOE

models.py

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager

import datetime
import os

# Create your models here.
def filepath(request, filename):
    old_filename = filename
    timeNow = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    filename = "%s%s", (timeNow, old_filename)
    return os.path.join('product_images/'+str(filename))


# Create your models here.
class CustomUserManager(BaseUserManager):
    def _create_user(self, email, **extra_fields):
        if not email:
            raise ValueError("Email must be provided")

        user =self.model(
            email = self.normalize_email(email),
            **extra_fields
            )
        user.save(using=self._db)
        return user

    def create_user(self, email, **extra_fields):
        extra_fields.setdefault('is_staff', False)
        extra_fields.setdefault('is_active', False)
        extra_fields.setdefault('is_superuser', False)
        return self._create_user(email, **extra_fields)

    def create_superuser(self, email, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_active', True)
        extra_fields.setdefault('is_superuser', True)
        return self._create_user(email, **extra_fields)



class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(db_index=True, unique=True, max_length=1024)
    first_name = models.CharField(max_length=1024, null=True)
    last_name = models.CharField(max_length=1024, null=True)
    user_mobile = models.CharField(max_length=1024, null=True)
    user_image = models.ImageField(upload_to=filepath, null=True)
    user_bio = models.CharField(max_length=4096, null=True)
    user_dob = models.DateField(null=True)
    user_invitation_id = models.CharField(max_length=1024, default=None, null=True)


    is_staff = models.BooleanField(default=True)
    is_active = models.BooleanField(default=True)
    is_superuser = models.BooleanField(default=True)


    objects = CustomUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    class Meta:
        verbose_name = 'User'
        verbose_name_plural = 'Users'

views.py

ОБЪЯСНЕНИЕ КОДА

  • В models.py, переопределение части кода Django для использования электронной почты вместо имени пользователя для аутентификации Django.
  • В файле views, создаем класс для хранения email и отправки проверочного письма, а затем перенаправления на страницу регистрации.
  • Данные сохраняются успешно и после этого возникает ошибка.
Вернуться на верх