尝试除了函数内部不起作用,而函数外部不起作用

时间:2020-05-08 08:21:07

标签: python django django-rest-framework try-catch

我试图将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 个答案:

答案 0 :(得分:1)

也从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