Короткий вопрос: как переопределить настройку PAGE_SIZE
для REST_FRAMEWORK
в тестовом примере в Django?
Подробности о вопросе: у меня есть следующие настройки в моем проекте base.py
:
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'Masterdata.authentication.FashionExchangeAuthentication',
),
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.DjangoFilterBackend',
),
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
'PAGE_SIZE': 100
}
Теперь я хочу создать тестовый пример, в котором я изменю размер страницы на 10. Однако я не могу переопределить этот конкретный параметр, сохранив остальную часть словаря нетронутой. Кто-нибудь знает, как это сделать?
Вот что я пробовал:
1) Добавление декоратора mod_settings над тестовым методом:
@modify_settings(REST_FRAMEWORK={
'remove': 'PAGE_SIZE',
'append': {'PAGE_SIZE': 10}
})
Это не меняет настройки.
2) Использование override_settings в качестве менеджера контекста:
test_settings = settings.REST_FRAMEWORK
test_settings['PAGE_SIZE'] = 10
with override_settings(REST_FRAMEWORK = test_settings):
# do stuff
Однако строка с test_settings['PAGE_SIZE']=10
не работает, потому что, по-видимому, переменная settings.REST_FRAMEWORK
является списком, а не словарем.
print(settings.REST_FRAMEWORK)
['DEFAULT_PERMISSION_CLASSES', 'DEFAULT_AUTHENTICATION_CLASSES', 'DEFAULT_FILTER_BACKENDS', 'DEFAULT_PAGINATION_CLASS', 'DEFAULT_RENDERER_CLASSES']
Почему этот параметр находится здесь в списке? Я убедился, что переменная больше нигде в проекте не перезаписывается.