电商项目 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 协议》,转载必须注明作者和本文链接
推荐文章: