Я использую Django 1.9 и Django Rest Framework 3.3DRF - База Viewset для паров запроса подтверждения
Я создаю три новые конечные точки, которые похожи, но все еще достаточно различны, что я хочу, чтобы они были их собственные viewsets, чтобы избежать грязный код. Они не подкреплены моделью, поэтому я распространяю ViewSet
напрямую. Одно сходство между всеми тремя конечными точками - это те же самые два параметра запроса. Поэтому я нахожу, что я это делаю:
class MyFirstViewset(viewsets.ViewSet):
def list(self, request):
some_param = request.query_params.get('someparam')
if not some_param:
return Response('someparam query parameter is required', status.HTTP_400_BAD_REQUEST)
some_other_param = request.query_params.get('someotherparam')
if not some_other_param:
return Response('someotherparam query parameter is required', status.HTTP_400_BAD_REQUEST)
class MySecondViewset(viewsets.ViewSet):
def list(self, request):
some_param = request.query_params.get('someparam')
if not some_param:
return Response('someparam query parameter is required', status.HTTP_400_BAD_REQUEST)
some_other_param = request.query_params.get('someotherparam')
if not some_other_param:
return Response('someotherparam query parameter is required', status.HTTP_400_BAD_REQUEST)
Как вы можете видеть ... это не очень СУХОЙ. Очевидным решением было бы наследование базового представления, выполняющего аналогичные части проверки, проблема в том, что я не уверен, что лучше всего делать с подобным образом с DRF. Хотел бы я сделать функцию проверки защищенного доступа и позвонить? Но если бы все, что я делал, это проверять диктофон для ключей, он даже не должен был быть в ViewSet правильно? Просто, имея последний класс, выполните проверку в list()
, тогда вызов того, что во всех дочерних видах также кажется мне странным, с тех пор я использую list()
, чтобы проверить и не возвращать что-либо в базовом классе.
Может ли кто-нибудь сказать мне, какой хороший подход к этому был бы? Что лучше для таких случаев? Я разошёл, но ничего не мог найти. Любой совет будет принят во внимание. Благодаря!