发现其实昨天已经完成了 我以为得多个超时验证 结果事实是如果cache.get(email)里的内容已超时 返回的是None。所以只需要把输入的值直接拿来和get到的值比较即可。
还有一开始比较的时候 一直返回的是不匹配 后来我打印了两个值比较 也都一样没毛病 但依旧返回不匹配。我再打印他俩的数据类型 发现缓存里存的是int类型 而POST过来的数据是str类型 就强转成int类型 就过了 跳转到/login/登录页面 还没写 也表明注册功能也完成了。
还有就是一开始缓存保存的时间有时区问题 因为我们在东八区 存入的时间比当前时间少了8小时。百度了一下 为了让存入缓存的时间与我们当前时区时间一致。在settings.py中修改USE_TZ配置 原本默认是True。
USE_TZ False2.今日真正的任务 做登录页面
很尴尬的是我实在懒得思考 继承同一个模板又怕样式冲突 我决定接下来采用多打代码少思考的方式完成接下来的内容。无非就是多复制粘贴 嘿嘿。
行吧也没那么懒 继承也没要多思考多少 无非就是样式问题 等我把登录写完再采用上面的方式。
3.登录页面点击首页的登录按钮 或者注册成功后会跳转到登录页面
其实很多都是在他这边学边模仿的。所以直接看视频好了 我自己都不太明白。登录表单依旧是借助新的Form表单生成的。写得很空洞 上点知识点和今天遇到的问题吧 4.用到的知识点 浏览器会自带一些表单验证 自己写的验证可能被覆盖掉 所以再Form表单加一个属性novalidate
form action /xx/ method post novalidate formDjango的models.xxField.objects.filter 无法做或查询 得引入Q。因为filter取到的是一个Queryset对象 所以得加个.first()取里面第一个才是要的数据。
from django.db.models import Q models.User.objects.filter(Q(phone phone_or_email) | Q(email phone_or_email)).filter(password password).first()url重定向 redirect(’’)加路由
from django.shortcuts import redirect return redirect( / )说到redirect就得说一个路由问题
今天实践了才算真的清楚了
例如我现在所在的url是127.0.0.1/login/
我重定向redirect(‘index’) 注意这里前面没有斜杠
则我重定向到的地址是 127.0.0.1/login/index
如果我重定向redirect(’/index’) 这里前面有斜杠
则我重定向到的地址是127.0.0.1/index
request.session[ image_code ] code # session的key是 image_code ,值是code代表的值。 request.session.set_expiry(60) # 主动设置session超时时间 默认2周form表单拿到session值 从武sir那学来的
def __init__(self, request, *args, **kwargs): super().__init__(*args, **kwargs) self.request request
就是把request当作参数传进来了 这样每次实例化一个对象就都可以获取request里的值 并且不影响它本来的功能
form LoginForm(request) form LoginForm(request, data request.POST)5.注册与登录功能就完成啦
结合理论知识 学 和实战经验 做 感觉收获更多也更快。
6.有时间把代码的注释尽量都补上 毕竟离答辩还有很长的时间 怕赶不上遗忘速度。 没边写注释的习惯


