中间件-上下文管理器

中间件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实现这给定的五种方法的中间件

先在主项目下建立一个中间件的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',
            ],
        },
    },
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值