Как правильно использовать djangorestframworkjwt - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь реализовать django -rest-frameworkjwt , но я столкнулся с одной проблемой, как показано на рисунке ниже. Я пытаюсь следовать документации django -restframeworkjwt и документации rest-auth. enter image description here

Здесь я использую пользовательскую модель пользователя

from .managers import CustomUserManager


class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'), unique=True)
    username = models.CharField(_("Username"), max_length=50, unique=True)
    ..........

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username', ]

    objects = CustomUserManager()

    def __str__(self):
        return self.email

    def get_full_name(self):
        return self.userprofile.first_name + " " + self.userprofile.last_name

    def get_short_name(self):
        return self.userprofile.first_name


class UserProfile(models.Model):
    user = models.OneToOneField(User, verbose_name=_("User"), on_delete=models.CASCADE)
    first_name = models.CharField(_("First name"), max_length=50)
   ....................

urls.py

urlpatterns = [
    url(r'^api-token-auth/', obtain_jwt_token),
    url(r'^api-token-refresh/', refresh_jwt_token),
    url(r'^api-token-verify/', verify_jwt_token),
    path('api/v1/', include('apps.urls.v_1')),
]

и settings.py

# Application definition

TENANT_MODEL = "tenant.Client"

SHARED_APPS = [
    "tenant_schemas",
    "apps.tenant"
]

TENANT_APPS = [
.........
    "rest_framework",
    'rest_framework.authtoken',
    'rest_auth',
    "apps.users",
]

INSTALLED_APPS = SHARED_APPS + TENANT_APPS


REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        # 'rest_framework.permissions.IsAuthenticated',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        # 'rest_framework.authentication.TokenAuthentication',
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
    ),
}
REST_USE_JWT = True

Я делаю что-то не так. Здесь я использую три пакета djangorestframworkjwt. Я пользуюсь

rest-auth and django restframworkjwt

1 Ответ

0 голосов
/ 01 марта 2020

Мне кажется, что вам не хватает одной или двух возможных вещей,

  1. rest-auth urls: url('^rest-auth/', include('rest_auth.urls'))
  2. установите своего пользовательского пользователя в настройках: AUTH_USER_MODEL = 'users.CustomUser' (Я не вижу все ваши настройки, возможно, у вас есть эта точка покрытия)
...