Попробуйте, кроме того, что внутри функция не работает, но снаружи работает - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь получить блок try except вне моей функции как часть DRY. Если я помещаю его прямо в функцию, он работает

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

    try:
        Account.objects.get(username=username, password=password)
    except Account.DoesNotExist:
        return JsonResponse({
            "success": "false",
            "error_code": "1",
        })

Но если я превращаю его в функцию user_check, он не работает

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

        user_check(username,password)
def user_check(username,password):
    try:
        Account.objects.get(username=username, password=password)
    except Account.DoesNotExist:
        return JsonResponse({
            "success": "false",
            "error_code": "1",
        })

1 Ответ

1 голос
/ 08 мая 2020

Возврат и из блока try. Например:

def user_check(username,password):
    try:
        Account.objects.get(username=username, password=password)
        # Add this line
        return True
    except Account.DoesNotExist:
        return JsonResponse({
            "success": "false",
            "error_code": "1",
        })

И ваша функция может быть:

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

        data = user_check(username, password)
        if data==True:
            # executed from try block known
...