python - 尝试 except 在函数内部不起作用,但在外部起作用
问题描述
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",
})
解决方案
也从 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