ModuleNotFoundError at /auth/users/me/ No module named 'accounts'
I am using djoser and django-rest-framework JWT for user authentication . According to doc.for djaoser . I have /user/
end point for creating a user and /user/me/
for getting details. The first endponts works fine but in the second /user/me/
, it give me the error
ModuleNotFoundError at /auth/users/me/
No module named 'accounts'
Я не знаю, где кроется проблема. Я тестирую его на postman.
вот мой settings.py:
I am using Django's built in user and not any custom user with a little bit modification. If yuo wanna see , here it is: in myenv>lib>site-packages>django>contrib>auth>models.py
class AbstractUser(AbstractBaseUser, PermissionsMixin):
"""
An abstract base class implementing a fully featured User model with
admin-compliant permissions.
Username and password are required. Other fields are optional.
"""
username_validator = UnicodeUsernameValidator()
username = models.CharField(
_('username'),
max_length=150,
unique=True,
help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
validators=[username_validator],
error_messages={
'unique': _("A user with that username already exists."),
},
)
first_name = models.CharField(_('first name'), max_length=150, blank=True)
last_name = models.CharField(_('last name'), max_length=150, blank=True)
email = models.EmailField(_('email address'), blank=True , unique=True)
is_staff = models.BooleanField(
_('staff status'),
default=False,
help_text=_('Designates whether the user can log into this admin site.'),
)
is_active = models.BooleanField(
_('active'),
default=True,
help_text=_(
'Designates whether this user should be treated as active. '
'Unselect this instead of deleting accounts.'
),
)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
objects = UserManager()
# EMAIL_FIELD = 'email'
USERNAME_FIELD = 'email'
# REQUIRED_FIELDS = ['username']
REQUIRED_FIELDS = ['first_name','last_name']
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
abstract = True
def clean(self):
super().clean()
self.email = self.__class__.objects.normalize_email(self.email)
def get_full_name(self):
"""
Return the first_name plus the last_name, with a space in between.
"""
full_name = '%s %s' % (self.first_name, self.last_name)
return full_name.strip()
def get_short_name(self):
"""Return the short name for the user."""
return self.first_name
def email_user(self, subject, message, from_email=None, **kwargs):
"""Send an email to this user."""
send_mail(subject, message, from_email, [self.email], **kwargs)
Что я проверил на данный момент
Большинство решений в интернете предлагают добавить учетные записи в settings.py INSTALLED_APPS, но я не создавал никаких приложений для учетных записей, поэтому нет причин добавлять их. Я буду очень благодарен вам, если вы сможете помочь, потому что это отняло у меня много времени. Спасибо ❤️❤️❤️❤️❤️
если вы внимательно прочитаете документ SERIALIZERS-note. вот подсказка
Ключ 'user' используется для обычных пользователей, тогда как 'current_user' позволяет вам установить сериализатор для специальной конечной точки /users/me. Оба они по умолчанию используют один и тот же сериализатор.
Итак, если вы посмотрите на СЕРИАЛИЗАТОРЫ DJOSER в файле setings.py
'SERIALIZERS': {
'user_create': 'base.serializers.UserSerializer',
'user': 'base.serializers.UserSerializer',
'current_user': 'account.serializers.UserCreateSerializer', #here is the problem. What is 'account' doing here. You should cmoment this
'user_delete': 'djoser.serializers.UserDeleteSerializer',
}