[Day29] 除错(debug)的心得

今天来分享一下我自己如何除错,出错很正常(对我来说啦QWQ),但是发现有错,很重要的是,要知道自己错在哪里,所谓「知己知彼,百战百胜」我自己会分享几个简单的技巧方式给夥伴们。

  1. 第一种方法就是把想知道的东西都印出来,很多时候可能是小细节,我们没有注意到,可能是参数的资料型态不对,或者是抓取的资料根本不是你想的那样,所以我常常会在程序中直接print(变数名称)或者是print(type(变数名称)),在API里面这样写,我们在Postman测试发送请求的时候,我们可以在输入指令的cmd(命令指示字元),里面看到印出来的是甚麽东西。

  2. 第二种方法有点像是走迷宫,沿路丢饼乾屑做记号,用注册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有问题,一路做记号就像下面这张图一样。

  1. 第三种方法是把例外印出来,这边以信箱验证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 参数?

>>:  [职场]舒服的工作环境是需要经营的

[DAY22]Istio实作篇-Bookinfo

Bookinfo可以在sample这个folder里面找到,官方是使用这个专案demo istio的...

.Net Core Web Api_笔记06_HTTP资源操作模式Head

HttpHead操作是只会回传Http Header部分资讯的api请求 所以不会返回函数回传的主体...

[第十四只羊] 迷雾森林舞会VII 开完房间後走进房间

天亮了 昨晚是平安夜 关於迷雾森林故事 焦虑抑制剂 4号:我跟全场站不同边耶,我站7耶,我跟7号玩家...

安装防盗系统的重要性

今天,我们来探讨一下安装防盗系统的重要性吧。 在疫情期间,仍然有不入室盗窃的罪状发生。为了保障人身及...

虹语岚访仲夏夜-18(打杂的Allen篇)

过了几天,我趁小七来稽核的时候,叫住了她。 『七小姐,你上次说的blue是那个blue?』 「你要先...