00:00
在加构里边啊,只要你考虑到它基本上都西考虑到了,在这边呢,有这么一个包form,我们的JA构,它将来有个什么框。这课咱们是不是用过啊,扣下边这个扣下面有一个没。哎,有这么个谬啊,这个缪下边呢。他有一个什么呢?有一个三个没有。那么。什么三都没有,三都没有啥意思啊,是不是发送邮件吗?对不对,那么其实啊,他发布件扣的是这个玩意在那发的。啊,这个包咱们一会要用到。OK不OK啊,好这个包啊,那么呢在这呢,因为他发邮件是一个,呃,相对来说比较独立比较庞大的这么一个功能,所以说呢,我就在这边干嘛呀,我给它封装一个函数。OK不OK,我给它封装一个函数,到那一调它是不是就发一个邮件,一调是不是就发一个邮件,所以说我在这就给他封装函数,这个函数就是什么呢?就叫S的。
01:02
呃。三的没扣的吧。发送邮箱验证码。OK不OK,好在这里边它到时候是需要参数的。OK,你现在想想,你现在不要管用,用什么包,你就光想想这个函数他需要给谁发。给哪个邮箱里边发,是不是你注册这个邮箱,所以说这块咱们的食材是不是就有了。我先不管你这个函数定义,我先调你。能听明白什么意思吧,我先调你,你既然要发邮件啊,你既然要发邮件,那么给谁发呢?那肯定是我这个email,我刚注册好的这个email对吧,而且你给我发的邮件是什么邮件呢?是激活的邮件还是修改密码的邮件,还是修改邮箱的邮件呢?
02:00
是不是激活的邮件啊,而我们当时在做这个邮箱验证码的时候,是不是咱们用了一个3TABLE呀,还记得吗?在我们user他的models里边,我们是不是得找一下呢?在这里边咱们是不是有个3TYPE,一是不是代表激活,二是不是代表重置密码,三是不是代表修改邮箱啊,所以说我这块你既然给我发邮件,那你是不是得告诉我你是发什么类型的邮件?能看懂啥意思吗?好,那么在这边我去干嘛呀,直接调给谁发给你发发什么发激活邮件。OK,好,接下来我们的任务不就放在哪了,不就放在了这个邮件。发送到函数身上了吗?怎么去定义这个函数?是不是这个意思,OK。那这点咱就不用管它了,那么我们遇在遇见这种事情的时候呢,一般还是这个样子啊,因为发邮件它是不是相当于是一个工具啊,所以说呢,我在我的整个这个项目里边再给他建一个什么呀。
03:12
正常的文件夹就行。OK,然后呢,我就给它叫什么呢,就叫做。有些人,有些人愿意叫U。OK吗?叫U,你知道也可以叫什么托。朱啥意思啊,OK,那么其实这个名字啊,你自己定。啊,You choose,兔子都行,无所谓啊,我就给它叫兔子了,对吧,在这个兔子,然后在兔子里边,我给它new一个什么呀,用个pen fair在这里呢,我就叫什么呀,算呢,我们的谬。啊,我这个拍的票我就给它叫什么发邮件的工具,房子三呢,好,我告。然后在这里边呢,我去干嘛呀,我去定义我那个函数。
04:03
就像什么呢,和那边名字得一样啊,算啥呀,没看的吧,好在这里边,那么既然那边有行有十参传过来这边干嘛。情操是不是得接收啊,首先第一个是不是email。第二个是它三大板。OK。反正我到时候这一边这个函数写完,然后我到我这个view里边就直接给它导进来就行了,对吧,我反出去呢,方不的啊这个这个错。To,它下边是不是有一个sound没有to,然后用是谁呀。是不是stand有没有扣的,这我去破它就行了,那么这边。是不是就不包红了,OK,那么咱们的精力是不是就放在这个。
05:01
这个没有错,怎么白了,OK,那么在这边关键是。发送验证码的功能,它到底都做了哪些事呢?嗯。OK,他到底是做哪些事啊?大家想一想。我一会儿啊,我要给你发你注册我了,对吧,我要给你发个链接,并且是不是后边要带一个验证码呀,对吧,那么你说这个验证码我首先存不存,咱这个首先要存起来,因为后边在激活的时候,咱们是不是要用它做对比的,所以住记住了,发送验证码第一步看遍。验证码对象保存数据库。OK。第一步。创建邮箱验证码对象,保存数据库。
06:04
用来。以后做什么呀,对比。第一步看明白了吗?不。那么我上来我就什么三缺21,啥都不管,先干嘛呀,先实例化,谁要谁呢,我们的表。Frame,我们的users,它下边是不是有一个models啊,对吧?Important是谁呀?Email WiFi code咱们是不是用这张表示不是在保存我们的邮箱验证码啊对吧?A然后同什呢?Email y code的实例化,实例化以后接着首先它里边是不是有a.email那这个email咱是不是咱穿过来了。不就这一吗?对不对,这这这这都是这都是一整套环环相扣的,OK,我问口再有A点,它这底下有个3TYPE,还有3TYPE,咱是不是就是咱的这个三菜,别给他传过来了。
07:03
OK,往后再后一个关键是A点扣的。这里面是不是有个扣子验证码,咱们如何去做呢?这是一个问题。对吧,它里边现在一共是不是就这四个字吧,现在没是不是咱有了sometime,咱们是不是也有啊,对吧,那么这个扣子关键是这个扣子,你只要把这个扣子搞定了。那干嘛,他到这个表是不是咱就可以保存了。那那这个验证码一般都是怎么发的呢?你能想到什么?做。它其实就是个随机数,它有多麻烦呢?它不麻烦,他一点都不麻烦,看着的那个验证码好神奇。其实就是随机数,那么我们在这呢?既然你要获得这么一个验证码,好,再来,我再给你定一个函数,专门干嘛生成验证码?
08:05
不OK,好,再来个什么呢?我们这个get吧。我给他获取随机验证码,在这里面呢。在这里呢?我在那找一些叫什么叫做code。长度你可以给我干嘛,你可以给我传它,你给我传八,我就给你生成八位。你给我穿16,我就给你撑成16位的长度。你给我传四,那就是四位。能懂什么意思吗?好。好,那么关键是关键这个函数定义里面怎么去写呢。我怎么去获取到这个码啊?OK不OK?
09:00
好,那么首先我们得有马园。听说马原吗?就是你从你从什么里边去选这些。啊,马原,那么我们也在这里边先去定一个啥扣字走。看到吗?马原,马原要等于什么呢?这个头发而已。这个党员。咱们就让他从哪大写字母,小写字母以及数字里边去选OK吧。拿你右手的食指。在你的键盘上去滑。首先数字是不是第一行啊,划过来就行了,一二三四五六七八九十。是不是这这十个数字。OK,接着就是你的。小写字母三行,再划一下子,是不是小写字母就有了第一行?第二行、第三行。
10:01
OK了,接着第三行,不是把你的大写键开开吗?这不再划一遍。得了,这就是你的马云。不就满年了吗?好,那我的验证码已经生成,你就得随机的从这里边去做选择。你要选择四位,不就是在这里面随机选四次吗?你要选八位,不就是在这里面随机选位吗?16位不就是16位吗?能想通什么意思吗?好,而如果说,而如果说,我们如果现在要选择这么一个位数,而且是随机的随机数,你想到了什么包。之前肯定学过这个包吧,OK,那把咱这块怎么去玩呢?怎么说?诶。Four。接着我就可以这么干了,For,哎,因啥呢?因我们的谁呀?是不是另一个玩意啊,长度。
11:06
啊,不是不认。是不是他呀。那么你这里边你是八是不是就选八次啊,你是七是不是就选七四。没没毛病吧,好没毛病,那么接着呢,我在这儿外面来一个什么,然后扣的,然后等于什么呢。空串。看看空转,然后在这里边我肯定是干嘛呀。关键是这一步。就是。随机选择一个字符吧,然后接下来。接下来一步,咱是不是就让这个扣干嘛,是不是加等于我们这个谁啊。说随机的做。这样的话,它经过这些一循环下来,是不是一个码。这个扣子是不是就是咱们要的嘛,对吧,咱给他return回来,搁这一再用不就完事了吗?
12:06
OK。而关键我们就是。这块如何去做啊?是不是是不是这意思,所以先把什么,先把架构想破。好,那么咱们是要用到谁了?你不,咱们random里边有什么东西啊。我记得有好好几个red in,然后red range,对吧,你觉得咱们用的是哪个?我。咱们咱们用用这个第三个吧。OK不OK,好,那这个认知它是个什么玩意呢?我们来看。按住它的CTRL键,你点进去瞅一眼,如果你忘了,你干嘛点进去瞅一眼,你看吧,这不就是咱们自己包里边的东西嘛,对吧,这是人的认知,是不是就等于它啊,好,就这边这样。
13:13
什么?他说,Choose around a from range start,然后stop。后面是不是还有个,后边还有个步数啊,默认这个步长是多少一。啊,他就给你介绍个这。在开水你会经常加油。他说是你,他说你不经常用他是吧,对呀。
14:00
哎呀,那咱用哪个多呀。用哪个?那么如果咱有这用这个,那就。那我就直接让这个扣子干嘛呀?加等于是谁?里边是不是传这个谁呀。Cold。是不是这么个玩意。你如果用它是不是更简单。是不是这意思,那如果说如果说你不你不知道这个choice,那么你再用这个也是可以的。啊,你得选一个下标嘛,他能随机的选一个下标嘛。
15:03
哎,这个这个这个这个这个踹死。啊。传一个序列进去就行了嘛。这个意思。这个是不是用起来比较简单嘛。啊,你可以用这个车子,那么现在如果说让你用run range或者run in,你怎么去玩嘛,关键就是这块咱们给他都复习复习嘛,是吧。咱不能说碰见这个问题哦,有了车子就哭了。是不是这意思,好,那么现在我有了这个串了厕所不让用了,行不行,好,我不让用了,我接着呢,我想让大家用一下谁啊。然后那么然后引泡我们这个人。我想让大家用一下这个。范围,从范围内随机的取一个。
16:01
OK,那么咱随机的取一个字,随机的取一个字符,怎么去取。为什么?是不是等于cos。是不是中?哪里?咱这符号能不能用这个中号。看好这里边是不放下边了,你放头是不是就拿到这个一了,对吧,你放一是不是拿到这个二了,还记得吗。OKOK,关键现在是我这里边出来随机的拿到一个啥呀,拿到一个下边吧,那么咱是不是就可以用谁啊,Read range read range,可里边是不是需要传递一个。其实啊,结束啊,刚才你也看到了,说步数是不是一啊。对吧,那其实多少。是不是零因数多少啊?是不是我对他去求的长度。
17:05
不道是求问问你对吧,你不能直接拿拿塔58对不对对,那你想谁呢。它是不是可以同样长度,它的长度多少。啊,58对吧,58,那么既然是58,那咱是不是应该是从零到57啊。你你不管你说的多少数字对不对,你求出来是十,那么这个长度是不是就是十对吧?那么既然是十,我们的范围是不是应该是零到九之间啊,所以你说这块应该是加一还是减一啊。明白啥意思吗?这样的话我就从零到谁呀,到你这个长度。你现在不用看这么多了,你光看数字,数字是不是十个刚好对吧,既然你的长度是。
18:02
十,那么你是不是就是应该从零到九之间去选一个呢?能看懂吗?好,这样的话,我是不是就拿到了这个随机的字符了。拿到了以后接着ground放这个扣干嘛,是不是加等于谁呀?加等于我这个啊,知道吧。好了。好,经历完这个放循环以后,我是不是把你这个。这个扣子是不是你碰一下就行了。同志们能想通吗?没有毛病吧?其实你说怎么出来出来出来这个验证码的。
19:04
咱们都会玩。只不过。以前没玩过吗?对吧,这次咱玩一下子以后他再做验证码,害怕吗?就不问了,而且这个东西可以作为什么,作为你的工具,啥意思呢。写一次,一劳永逸。以后真真正正那些屌的程序员都是啥程序员?都是有自己的包的。随身都会携带一个U盘。能明白啥意思吗?U盘里面就放着一个P文件。放那个文件干嘛。是不是现在人家的包啊?做什么项目?咔,U盘一插贴,文件就拉过去了。拉过去以后用到什么功能,直接从人家的P文件里边就导导什么功能。能听懂什么意思吗?所以说啊,以后像这种通用的这个函数啊啥的能作为工具。
20:04
你慢慢,慢慢就得积累自己的包了。OK,这样的话,你你干上几年,你的包会非常多。然后你的开发效率会越来越高,你会发现我有些代码根本都不用写,老大给我安排三天的任务,可能俩小时就完了。剩下的时间呢?是不是这意思好。我走来继续往下走,一说happy就就就跑偏了来,现在咱们这块是不是有这个扣子啊,有扣子那我在这这不给你掉了,就什么就这等于什么呀。我们不这么干了,我们在上面直接来个扣的,它等于什么,等于我们这个get。不要这么抠的啊,好,你要拿几个。小七八个。
21:04
拿拿上八个嘛,完了以后接着我这个扣子,是不是让它等于我这个扣子就不就完事了吗。见到了我这个验证码,是不是就算给你创建好了,然后找什么A点。这。看好了吗?好,至此干什么呢?那我发送验证码的第一步就算搞定了。这块能懂吗?
我来说两句