#python #django #virtualenv
#python #django #virtualenv
Вопрос:
Я попытался создать пользовательскую модель пользователя, поэтому я расширил AbstractBaseUser и BaseUserManager для управления моделью.
Ошибка, которую я получил, когда попытался перенести или запустить сервер:
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/usr/lib/python3.8/threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/core/management/commands/runserver.py", line 110, in inner_run
autoreload.raise_last_exception()
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 76, in raise_last_exception
raise _exception[1]
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 357, in execute
autoreload.check_errors(django.setup)()
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/utils/autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/media/amir/Development/Dev/blog/venv/lib/python3.8/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'django.contrib.messagesdjango'
Моя пользовательская модель пользователя:
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=100, unique=True)
name = models.CharField(verbose_name="full name", max_length=100)
username = models.CharField(max_length=30, unique=True)
date_joined = models.DateTimeField(verbose_name="date joined", auto_now_add=True)
last_login = models.DateTimeField(verbose_name="last login", auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = ["username", "name"]
objects = MyAccountManager()
def __str__(self):
return self.email
def has_perm(self, perm, obj=None):
return self.is_admin
def has_module_perms(self, app_label):
return True
и менеджер моделей:
class MyAccountManager(BaseUserManager):
def create_user(self, email, username, name, password=None):
if not email:
raise ValueError("Users must have an email address")
if not username:
raise ValueError("Users must have a username")
user = self.model(
email=self.normalize_email(email),
username=self.username,
name=self.name
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, username, name):
if not email:
raise ValueError("Users must have an email address")
if not username:
raise ValueError("Users must have a username")
user = self.create_user(
email=self.normalize_email(email),
username=self.username,
name=self.name,
password=password
)
user.is_admin = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
Я думаю, что ошибка может быть связана с несовместимостью Python 3.8 и Django 3.1, которые я установил в своем venv:
список элементов:
Package Version
------------------- -------
asgiref 3.2.10
Django 3.1.1
djangorestframework 3.11.1
pip 20.2.3
psycopg2 2.8.6
pytz 2020.1
setuptools 50.3.0
sqlparse 0.3.1
Комментарии:
1. Как ваш
INSTALLED_APPS
выглядит? Вы либо пропускаете запятую послеdjango.contrib.messages
, либо случайно скопировали что-то.2. @yedpodtrzitko Вау, как это было просто :)). ответьте и позвольте мне согласиться.
Ответ №1:
Как ваш INSTALLED_APPS
выглядит? Вы либо пропускаете запятую после django.contrib.messages
, либо случайно скопировали что-то.