1、编写django接口
(1)视图view
from django.http import HttpResponse
from django.contrib.auth.hashers import make_password, check_password
def test_auth(request):
print('testing hashers')
a = make_password('TesT1!2@3#')
print(a)
b = check_password('TesT1!2@3#', a)
print(b)
return HttpResponse(b)
(2)url
from django.urls import path
from . import views
urlpatterns = [
path(r'auth', views.test_auth)
]
2、在django接口的视图中给两行关键代码打个断点
3、以debug运行django项目
(1)设置debug的script path、Parameters、Python interpreter
(2) 以debug模式运行
4、浏览器中访问接口
此时 程序在断点处停止,所有没有响应。这里是个转动的圈圈。
5、回到pyCharm查看确实在断点处停止了
6、断点一步步分析之
(1)Step into
来到make_password方法。
理解之:
password参数如果为空
return UNUSABLE_PASSWORD_PREFIX + get_random_string(UNUSABLE_PASSWORD_SUFFIX_LENGTH)
这里的UNUSABLE_PASSWORD_PREFIX是一个字符 感叹号 ‘!’
这里的UNUSABLE_PASSWORD_SUFFIX_LENGTH是一个数值 常量 40
这里的get_random_string进去看看,是从52个字母+10个阿拉伯数字中产生随机字符串的一个方法
def get_random_string(length=12,
allowed_chars='abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
"""
Return a securely generated random string.
The default length of 12 with the a-z, A-Z, 0-9 character set returns
a 71-bit value. log_2((26+26+10)^12) =~ 71 bits
"""
return ''.join(secrets.choi