Как исправить R1710 Либо все операторы return в функции должны возвращать выражение, либо ни одно из них не должно? - PullRequest
0 голосов
/ 06 мая 2020

Я использую pylint в своем коде и получаю сообщение об ошибке

R1710: Либо все операторы return в функции должны возвращать выражение, либо ни одно из них не должно. (inconsistent-return-statement)

Есть только два возможных оператора return, и оба они возвращают выражение, если я не ошибаюсь

@api_view(["GET", "POST"])
def user_info(request):
    if request.method == 'GET':
        username = request.GET.get("username")
        password = request.GET.get("password")

        return JsonResponse(error_handle(serialize(username, password)))

    if request.method == 'POST':
        username = request.data["username"]
        password = request.data["password"]

        return JsonResponse(error_handle(serialize(username, password)))
def error_handle(serializer):
   error = serializer["error"].value
   if error > 0:
       return {"success": "false", "internal_code": error}
   return {"success": "true",
           "account_token": serializer.data["account_token"],
           "user_id": serializer.data["id"],
           "account_name": serializer.data["account_name"],
           "account_permission": serializer.data["account_permission"],
           "pin": serializer.data["pin"]
           }


def serialize(user, password):
   data = Account.objects.get(username=user, password=password)
   return AccountSerializer(data)

Ответы [ 2 ]

0 голосов
/ 11 мая 2020

Что происходит в user_info, если request.method не является ни GET, ни POST?

@api_view(["GET", "POST"])
def user_info(request):
    if request.method == 'GET':
        # ...
        return JsonResponse(error_handle(serialize(username, password)))

    if request.method == 'POST':
        # ..
        return JsonResponse(error_handle(serialize(username, password)))

    # ???
    # Something should be returned here!
0 голосов
/ 06 мая 2020

Я бы предпочел использовать APIView:

from rest_framework.response import Response
from rest_framework.views import APIView

class UserInfoView(APIView):
    def get(self, request):
        username = request.query_params.get('username')
        password = request.query_params.get('password')
        return Response(error_handle(serializer(username, password))

    def post(self, request):
        username = request.data["username"]
        password = request.data["password"]
        return Response(error_handle(serialize(username, password)))
...