Django-axes Ошибки: Объект 'Settings' не имеет атрибута ...

Я столкнулся с большим количеством ошибок атрибутов при использовании django-axes. Всякий раз, когда я исправляю одну из них, устанавливая атрибуты по умолчанию, начинают появляться новые. Я следовал документации по установке. Вот мой код...

settings.py

Внизу я попытался установить некоторые атрибуты по умолчанию, которые вызывали ошибки. В настоящее время приведенный выше код приводит к ошибке 'Settings' object has no attribute 'AXES_HANDLER'.

В views.py при аутентификации пользователя я установил request=request, как сказано в документации. Я также добавил функцию блокировки:

def lockout(request, credentials, *args, **kwargs):
    messages.error(request, "Account locked. Try again in 6 minutes")
    return redirect('index')

Примечание: Я также использую пользовательскую модель пользователя, чтобы пользователи могли войти в систему, используя свой email. Я тестировал это на другом проекте с django-axes и все работало хорошо. Поэтому я не думаю, что проблема в этом.

Вопрос: Как мне это исправить? Есть ли что-то, что мне нужно установить или настроить по-другому?

Добавьте переменную в ваш settings.py файл:

AXES_HANDLER = 'axes.handlers.database.AxesDatabaseHandler'

Я исправил это, добавив практически все возможные варианты:

AXES_ENABLED = True 
AXES_FAILURE_LIMIT = 3  
AXES_LOCK_OUT_AT_FAILURE = True
AXES_COOLOFF_TIME = 0.1         # in hours   - now set to 6 mins

AXES_LOCKOUT_CALLABLE = "Chat.views.lockout"

AXES_PROXY_ORDER = "left-most"
AXES_PROXY_COUNT = None
AXES_PROXY_TRUSTED_IPS = None
AXES_ONLY_WHITELIST = False
AXES_ONLY_ADMIN_SITE = False
AXES_ONLY_USER_FAILURES = False
AXES_ENABLE_ADMIN= True
AXES_LOCK_OUT_BY_COMBINATION_USER_AND_IP= False
AXES_LOCK_OUT_BY_USER_OR_IP= False
AXES_USE_USER_AGENT= False 
AXES_CACHE='axes'
AXES_LOCKOUT_TEMPLATE=None
AXES_LOCKOUT_URL=None
AXES_VERBOSE=True
AXES_USERNAME_FORM_FIELD='username'
AXES_USERNAME_CALLABLE=None
AXES_WHITELIST_CALLABLE=None
AXES_PASSWORD_FORM_FIELD='password'
AXES_SENSITIVE_PARAMETERS=[]
AXES_NEVER_LOCKOUT_GET=False
AXES_NEVER_LOCKOUT_WHITELIST=False
AXES_IP_BLACKLIST=None
AXES_IP_WHITELIST=None
AXES_DISABLE_ACCESS_LOG=False
AXES_ENABLE_ACCESS_FAILURE_LOG=True
AXES_ACCESS_FAILURE_LOG_PER_USER_LIMIT=1000
AXES_RESET_ON_SUCCESS=False
AXES_ALLOWED_CORS_ORIGINS='*'
AXES_HTTP_RESPONSE_CODE=403
AXES_RESET_COOL_OFF_ON_FAILURE_DURING_LOCKOUT=True
AXES_CLIENT_STR_CALLABLE=None
AXES_COOLOFF_MESSAGE=None

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
        'LOCATION': '127.0.0.1:11211',
    },
    'axes': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

AXES_META_PRECEDENCE_ORDER = [
    'HTTP_X_FORWARDED_FOR',
    'REMOTE_ADDR',
]

AXES_HANDLER = 'axes.handlers.database.AxesDatabaseHandler'

Если кто-то придумает лучший подход, пожалуйста, опубликуйте его здесь.

В настоящее время я также использую django-axes для пользовательской страницы входа в систему views.py. Я сделал следующее: включил декоратор @axes_dispatch в функцию входа. В Settings.py убедитесь, что AXES_USERNAME_FORM_FIELD настроен на поле учетных данных пользователя. В моем случае я использую 'email'. Поэтому его следует изменить на AXES_USERNAME_FORM_FIELD='email'.

from axes.decorators import axes_dispatch

views.py

@axes_dispatch
def user_login(request):
...

settings.py
AXES_USERNAME_FORM_FIELD='email'

Вернуться на верх