电商项目 2020-11-29
电商项目
2020-11-28 工作内容
完成用户登陆功能
1.用户登陆逻辑分析
- 核心:用户的验证和状态保持
- 状态保持 :通过状态保持,可以知道用户是否登陆,方便后续判断,开发功能
使用Django自带的login保持状态
- 设计登陆接口,返回首页或者其他页面
2.多用户登陆
- 需求:方便用户使用用户名或者手机号码登陆
- 后端逻辑:Django自带的用户认证authenticate只能传递用户名,需要自定义,重写这个方法
3.首页展示用户信息
- 选择方案:首页展示用户信息,有很多种方法,一种是后端服务器渲染模板,响应前端,一种是前端发送ajax请求,局部刷新,我选择把用户数据存入浏览器cookies中,Vue从cookies获取数据渲染,因为这样能方便后期生成首页静态页面。
4.退出登录
- 使用Django自带的logout方法,能清楚session数据,解除状态保持
- 删除cookies中的用户数据,并响应回浏览器
5.用户是否登录
- 需求:限制一些功能只能登录用户访问
- 后端逻辑:简单的办法是直接在功能接口判断,但是这样会有很多相同代码段
- 方案选择:方案有Django自带的is_authenticate、login_required装饰器、LoginRequiredMixin,选择使用 login_required装饰器,创建一个拓展功能类,来实现,并在setting中配置,方便后期增加各种功能。
- 注意点:Django是否登陆验证中,会自带next参数,能返回访问的时候URL地址,需要处理next参数,方便重定向到正确的URL。
总结
Django调式错误,在写URL路由时候,报错如下,原来是在用别人模板时候,HTML文件中,引用了infoURL地址,但是路由里面并没有,所以报错了,排查好几分钟才发现,多长记性。
raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch: Reverse for 'info' not found. 'info' is not a valid view function or pattern name.
Django自带的用户装饰器login_required(),验证不成功,会重定向到URL_LOGIN中的地址,注意修改
v-if=’name’ v-else 不用带参数
v-cloak 能让模板加载渲染完数据才显示效果,避免了页面渲染出现的闪烁问题
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: