그래 핀은 불행히도 기본값을 지원하지 않습니다. 나는 그런 경우를위한 장식자를 만들었다. DEFAULT_PAGE_SIZE
및 MAX_PAGE_SIZE
을 적절히 설정하십시오. 데코레이터 자체에서 값을 받도록 조정할 수는 있지만 장고 및 장고 장고 설정과 함께 사용하고 있습니다.
DEFAULT_PAGE_SIZE = 10
MAX_PAGE_SIZE = 100
def limited_pagination(func):
'''
Decorator for limiting the `first` and `last` pagination parameters. Uses
DEFAULT_PAGE_SIZE and MAX_PAGE_SIZE settings. Raises an exception when
values are invalid.
'''
def wrapper(*args, **kwargs):
if 'first' in kwargs and 'last' in kwargs:
raise RuntimeError('Use either `first` or `last`, not both.')
for key in ('first', 'last'):
if key in kwargs:
try:
value = int(kwargs[key])
except ValueError:
raise ValueError('`{}` must be an integer.'.format(key))
if value < 0:
raise ValueError('`{}` must be 0 or greater.'.format(key))
elif value > MAX_PAGE_SIZE:
raise ValueError(
'`{}` must not be greater than {}.'.format(
key, MAX_PAGE_SIZE
)
)
kwargs[key] = value
break # Break out of for loop to skip `else` branch.
else:
kwargs['first'] = DEFAULT_PAGE_SIZE
result = func(*args, **kwargs)
return result
return wrapper
사용 예 :
@limited_pagination
def resolve_whatever(self, info):
return [1, 2, 3, 4, 5]
당신은 무엇을 의미합니까? 너 진짜 quey 안에 다음 2을 위해 묻고 싶니? –