Я использую rest_framework_simplejwt аутентификацию в моей базе данных DRF. Все отлично работает, когда я использую браузер DRF с точки зрения аутентификации и доступа к предопределенным конечным точкам API.
Однако, когда я хочу получить программный доступ к конечным точкам для метода post / patch, я получаю Учетные данные аутентификации не были предоставлены. ошибка.
Вот мои настройки:
ALLOWED_HOSTS = ['*']
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'propertypost.apps.PropertyConfig',
'users.apps.UsersConfig',
'rest_framework',
# 3rd party
'django_filters',
'rest_auth',
'django.contrib.sites',
'allauth',
'allauth.account',
'rest_auth.registration',
'allauth.socialaccount',
'django.contrib.gis',
]
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 10,
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',
'rest_framework.filters.OrderingFilter',
'rest_framework.filters.SearchFilter',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
# 'rest_framework.permissions.IsAuthenticated',
),
}
...
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=525600),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': True,
'ALGORITHM': 'HS256',
'SIGNING_KEY': SECRET_KEY,
'VERIFYING_KEY': None,
'AUTH_HEADER_TYPES': ('Bearer',),
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
'SLIDING_TOKEN_LIFETIME': timedelta(minutes=120),
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}
AUTH_USER_MODEL = 'users.CustomUser'
REST_USE_JWT = True
Как я уже говорил, вышеуказанная настройка отлично работает в браузере DRF, но когда я пытаюсь запросить метод исправления, он выдает Учетные данные для аутентификации не были предоставлены :
AUTH_ENDPOINT = "http://127.0.0.1:8000/rest-auth/login"
data = {
'username': username,
'password': password
headers = {
"Content-Type": "application/json"
}
r = requests.post(AUTH_ENDPOINT, data=json.dumps(data), headers=headers)
token=r.json()['token']
data = {
'age': 8,
}
headers = {
"Content-Type": "application/json",
"Authorization": "JWT " + token,
}
r = requests.patch(POST_ENDPOINT, data=json.dumps(data), headers=headers)
Пожалуйста, дайте мне знать, что я делаю неправильно
Спасибо,