------Django天天生鲜项目
day3 ** 记录点滴 ** 2021.10.22
LoginRequiredMixin()类的原理:
编写LoginRequiredMixin()类,重写里边as_view()类方法,作用是对父类as_view()进行一层封装(login_required())view对象。
view视图中,类如果要对用户是否登陆判断,只需要继承LoginRequiredMixin类和View类,它会先调用LoginRequiredMixin类中as_view(),然后再调用View中的as_view
类视图as_view()流程:
as_view()内部定义view(),view()函数对视图函数初始化,返回并调用dispatch()方法。
dispatch()根据请求类型不同,调用不同函数(get(),post()),然后将这些函数response响应结果返回。
as_view()返回这个view函数闭包,供给path()路由调用。
request.user
如果用户未登陆->AnonymousUser类的一个实例
如果用户登陆->User类的一个实例
request.user.is_authenticated
除了自己给模板传递变量之外,Django框架也会把request.user传递给模板文件
关于浏览记录:
选择Redis数据库——内存型的数据库
访问商品详情页的时候需要添加历史浏览记录
访问用户中心个人信息的时候需要获取历史浏览记录
添加历史记录使用list格式:
history_用户id:[3,2,1]
添加历史记录时,用户最新浏览的商品的id从列表左侧插入