美文网首页
python中间件与上下文处理

python中间件与上下文处理

作者: 生命有一种执着 | 来源:发表于2020-07-13 17:54 被阅读0次

中间件

1、定义中间件

中间件可以放在项目路径下的任何位置,类似于视图函数,接收request,返回response;

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time     : 16:08
# @Author   : Star
# @Email    : fu410388645@163.com
# @File     : middleware.py
# @Software : PyCharm

#在APP中创建middleware.py文件,编写下面代码
from django.http import HttpResponseForbidden

def simple_middleware(get_response):
    print("初始化设置")
    def mddleware(request):
        """
        案列:只有谷歌浏览器才可以访问
              如果不是谷歌,就返回一个HttpResponseForbidden

        :param request:
        :return:
        """
        user_agent = request.META['HTTP_USER_AGENT']
        if not 'chrome' in user_agent.lower():
            return HttpResponseForbidden()
        print("处理请求前执行的代码")
        respose = get_response(request)
        print("处理请求后执行的代码")
        return respose
    return mddleware
2、激活中间件
#在settings.py目录下
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'teacher.middleware.simple_middleware'     #中间件
]

3、测试(在其他浏览器中访问)
image.png

上下文处理

1、定义

context传递变量到模板,如果所有页面都需要某些特定模板,那么就需要上下文处理;
上下文处理=python函数

2、案例
假如所有页面都需要一个name的变量
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time     : 17:39
# @Author   : Star
# @Email    : fu410388645@163.com
# @File     : customer_context_processor.py
# @Software : PyCharm

#在任意APP下创建customer_context_processor.py文件

def my_name(request):
    return {'name' : '小明'}
配置
#在settings.py文件下配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'teacher.customer_context_processor.my_name',  #自定义上下文处理器
            ],
        },
    },
]

测试

使用上下文处理时要在模板中加入字段名

#视图函数,
def test(request):
    return render(request,'teacher/test.html')

在test.html中加入{{name}}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>第一个模板页面</title>
</head>
<body>
    {{  name }}
    <h1 style="color:red">第一个页面</h1>
    欢迎大家访问
</body>
</html>
访问页面查看是否出现定义好的name字段名
image.png

相关文章

  • python中间件与上下文处理

    中间件 1、定义中间件 中间件可以放在项目路径下的任何位置,类似于视图函数,接收request,返回respons...

  • Tornado源码分析(二)异步上下文管理(StackConte

    异步异常与上下文 在Python黑魔法---上下文管理器最后关于上下文的使用,提到了tornado的处理方式。本篇...

  • python logging模块使用

    参考资料 Python之日志处理(logging模块) Python之向日志输出中添加上下文信息 Python之配...

  • 17_中间件组件

    中间件 一、什么是中间件 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻...

  • Django--中间件

    一、什么是中间件 Django 中间件是是介于request与response处理之间的一道处理过程,是修改 Dj...

  • [源码] Redux React-Redux01

    redux中间件洋葱模型imageimage redux中间件注意点image 导航 [深入01] 执行上下文[h...

  • 编写上下文处理器

    编写自己的上下文处理器指南上下文处理器有一个非常简单的接口:它只是一个Python函数,它接受一个参数,一个Htt...

  • Python(五十六)中间件和上下文处理器

    从2021年9月2日发文至今,Python系列(包括代码在内)共计109493个字、五十六篇! 1. 中间件 1....

  • 中间件和上下文处理器

    Django中间件(Middleware) 是一个轻量级、底层的“插件”系统,可以介入Django的请求和响应处理...

  • express 学习笔记1

    中间件:middleware 就是处理http请求的函数。特点:一个中间件处理完,传递给下一个中间件。每个中间件可...

网友评论

      本文标题:python中间件与上下文处理

      本文链接:https://www.haomeiwen.com/subject/scczcktx.html