今天来分享一下我自己如何除错,出错很正常(对我来说啦QWQ),但是发现有错,很重要的是,要知道自己错在哪里,所谓「知己知彼,百战百胜」我自己会分享几个简单的技巧方式给夥伴们。
第一种方法就是把想知道的东西都印出来,很多时候可能是小细节,我们没有注意到,可能是参数的资料型态不对,或者是抓取的资料根本不是你想的那样,所以我常常会在程序中直接print(变数名称)
或者是print(type(变数名称))
,在API里面这样写,我们在Postman测试发送请求的时候,我们可以在输入指令的cmd(命令指示字元),里面看到印出来的是甚麽东西。
第二种方法有点像是走迷宫,沿路丢饼乾屑做记号,用注册API为例子
@csrf_protect
def register(request):
if request.method == "POST":
try:
data = json.loads(bytes.decode(request.body,"utf-8"))
account = data["account"]
password = data["password"]
email = data["email"]
phone = data["phone"]
id = uuid.uuid5(uuid.NAMESPACE_DNS,account)
print("1")
check_account = UserProfile.objects.filter(account=account).first()
print("2")
if check_account is None :
print("3")
user = UserProfile.objects.create_user(id=id,username=account,account=account,email=email,phone=phone)
user.set_password(password)
user.save()
message = {"status" : "注册成功"}
else :
message = {"status" : "注册失败,帐号已注册"}
except Exception as e:
print(e)
message = {"status" : "error"}
return JsonResponse(message)
我在里面加了print,也就是印出,我在这里分别印出1、2、3,如果有一天在测试API的时候有问题,可是不知道卡在哪一行程序的时候,你就可以从记号中发现是哪一行function有问题,一路做记号就像下面这张图一样。
第三种方法是把例外印出来,这边以信箱验证API为例子,假如我把email_token class 里 init 的这一行self.salt =str(base64.encodestring(bytes("1_23a48c9710295","utf-8")))
改成 self.salt = base64.encodestring(bytes("1_23a48c9710295","utf-8"))
,因为signing.TimestampSigner参数资料类型产生except,这时候把它印出来就可以看到except的讯息。
except Exception as e:
print(e)
就会像底下这张图一样
他告诉我资料型态str和byte没办法串在一起
这三种除错技巧是我自己的习惯使用的,这边给夥伴们提供参考,明天是铁人赛最後一天了 !! 终於阿~~~ 明天就轻松一下,分享一下我完赛的心得。
<<: Day 29 如何调整 Odoo configuration 参数?
Bookinfo可以在sample这个folder里面找到,官方是使用这个专案demo istio的...
HttpHead操作是只会回传Http Header部分资讯的api请求 所以不会返回函数回传的主体...
天亮了 昨晚是平安夜 关於迷雾森林故事 焦虑抑制剂 4号:我跟全场站不同边耶,我站7耶,我跟7号玩家...
今天,我们来探讨一下安装防盗系统的重要性吧。 在疫情期间,仍然有不入室盗窃的罪状发生。为了保障人身及...
过了几天,我趁小七来稽核的时候,叫住了她。 『七小姐,你上次说的blue是那个blue?』 「你要先...