中间件
实现这给定的五种方法的中间件
先在主项目下建立一个中间件的python文件mymiddleware.py,然后在文件中写相应的代码。
#写中间件
#1.导入需要的包
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin
#写一个异常的中间件
class MyException(MiddlewareMixin):
def process_exception(self,request,exception):
return HttpResponse(exception)#抛出异常
然后在主项目下的setting里面配置刚写的中间件
MIDDLEWARE = [
'mysite.mymiddleware.MyException',
'mysite.mymiddleware.UserModelaction',
]
中间件成功
实现自定义的中间件实现
先在主项目下建立一个中间件的python文件mymiddleware.py,然后在文件中写相应的代码。
#写一个异常的中间件
class MyException(MiddlewareMixin):
def process_exception(self,request,exception):
return HttpResponse(exception)#抛出异常
#写自己一个中间件
class UserModelaction(object):
#获取响应
def __init__(self,get_resp):
self.get_resp=get_resp;
#返回调用
def __call__(self,request):
username=request.session.get('username','xxxxxx');
if username:
setattr(request,'myuser',username);
print("这是到达视图函数之前的页面")
response=self.get_resp(request);#获取响应
print("这是到达视图函数之后的页面")
return response
然后在主项目下的setting里面配置刚写的中间件
MIDDLEWARE = [
'mysite.mymiddleware.MyException',
'mysite.mymiddleware.UserModelaction',
]
上下文管理器
当前后端传递值,会使用上下文管理器,但是一个上下文传递一个页面,当传入的数据较多的时候,我们会使用一个上下文管理器来实现。现在主项目下简历一个上下文的py文件,然后在setting中的模板配置相应的上下文的管理器,然后就可以在全局下使用相应的字段。
def myuser(request):
username=request.session.get('username');#获取username的值
return {'myuser':username};
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR),'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'mysite.mycontextprocess.myuser',
],
},
},
]