代码如下:
from people.service import userQueryService class LazyUser(object): def __get__(self, request, obj_type=None): if not hasattr(request, '_cached_user'): request._cached_user = self.get_user(request) return request._cached_user def get_user(self,request): print 'request.user_id=%s'%request.user_id return userQueryService.findUserById(request.user_id) class UserMiddleware(object): def process_request(self, request): print 'user session process_request' request.user_id = request.session.get('_auth_user_id') request.__class__.user = LazyUser() return None
这里面的魔法代码是
request.__class__.user
访问到request.user才会触发__get__方法,并返回数据,这是一个demo:
class LazyUser(object): def __init__(self,id): self.id = id def __get__(self, request, obj_type=None): if not hasattr(request, '_cached_user'): request._cached_user = self.get_user(request) return request._cached_user def get_user(self,request): return self.id class Request(object): pass request1 = Request() request1.__class__.user = LazyUser(1) print request1.user request2 = Request() request2.__class__.user = LazyUser(2) print request2.user print request1.user
相关推荐
使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现的在线电影推荐系统源码 使用Django+MySQL实现...
python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+...
Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django...
Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于Django框架实现的一个学生信息管理系统源码 Python基于...
Django实现的图书借阅系统 Django实现的图书借阅系统 Django实现的图书借阅系统 Django实现的图书借阅系统 Django实现的图书借阅系统 Django实现的图书借阅系统 Django实现的图书借阅系统 Django实现的图书...
python+django+bootstrap实现的管理系统,注释全,功能强大,又文档说明,导入即可查看源码,初学者必备
python3.7下Django2.2引用ztree插件从mysql数据库导入数据表来实现树形态目录。
Django实现在线视频课堂播放网站源码 Django实现在线视频课堂播放网站源码 Django实现在线视频课堂播放网站源码 Django实现在线视频课堂播放网站源码 Django实现在线视频课堂播放网站源码 Django实现在线视频...
django常用命令,django 搭建流程 django整合mysql实现对外提供接口,
Django 学习实例 第四节:实现列表的增删改查 代码如下: views.py dblist.js dblist.html dbadd.html
通过目前最为广泛使用的django框架来实现一个即时聊天系统。django和channels的版本都已升级到2.0+,该源代码全部基于新版本实现。
Python+Django实现基于人脸识别的门禁管理系统【源码】Python+Django实现基于人脸识别的门禁管理系统【源码】Python+Django实现基于人脸识别的门禁管理系统【源码】Python+Django实现基于人脸识别的门禁管理系统...
Django实现登录-注册等功能==仅供参考
深度学习基于Django+Python实现的文字识别系统源码(前端+后端).zip深度学习基于Django+Python实现的文字识别系统源码(前端+后端).zip深度学习基于Django+Python实现的文字识别系统源码(前端+后端).zip深度学习基于...
毕业设计项目基于Django+Python实现的高校大学毕业生就业管理系统源码zip毕业设计项目基于Django+Python实现的高校大学毕业生就业管理系统源码zip毕业设计项目基于Django+Python实现的高校大学毕业生就业管理系统...
资源来自pypi官网。 资源全名:django-user-accounts-3.0.3.tar.gz
基于Django+DRF实现的企业管理系统源码,前后端分离,前端Vue,后端Django
使用Django实现的文件分享系统,实现搜索功能,分享功能,用户分享文件查询,写该项目的目的主要是用于保存一些电子书籍和学习资料,方便自己和其他人查找资料,所以对文件大小进行限制最大为5M。 使用Django...
可视化大屏使用Scrapy进行数据爬取,MySQL存储数据,Django写后端服务,PyEcharts制作可视化图表。基于数据可视化的游客行为分析系统,包含景点数量各区县分布地图、景点评分数据排名、景点人数占比分析、景点浏览...
可修改用户信息,头像,个性签名等