Using User info outside request in Django
在Django以外使用User信息(使用添加中间件的方法)
1. Create "middleware" directory in project directory.
在项目目录中创建"middleware"子目录
2. Create python file name "__init__.py" and "threadlocals.py" in "middleware" directory.
在 "middleware" 目录中创建 "__init__.py"文件和"threadlocals.py"文件
3. in side "threadlocals.py" copy this code
在 "threadlocals.py" 源文件中添加以下代码:
# threadlocals middleware
try:
from threading import local
except ImportError:
from django.utils._threading_local import local
_thread_locals = local()
def get_current_user():
return getattr(_thread_locals, 'user', None)
class ThreadLocals(object):
"""Middleware that gets various objects from the
request object and saves them in thread local storage."""
def process_request(self, request):
_thread_locals.user = getattr(request, 'user', None)
4. in "settings.py" add "project_name.middleware.threadlocals.ThreadLocals" to the MIDDLEWARE_CLASSES variable.
配置文件"settings.py"中,MIDDLEWARE_CLASSES 设置中添加 "project_name.middleware.threadlocals.ThreadLocals" 条目,
这里的project_name指的是你的项目名称
5. using like this
像下面一样使用:
from project_name.middleware import threadlocals
user = threadlocals.get_current_user()