.Tang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用场景:当同一个类容需要出现在多个模板中, 上下文管理器就是将这个内容以字典的形式返回给所有模板模板通过 {{ key }}取值。

结构:上下文管理器 文件名一般为context_processors.py xxx      xxx(request) 为一个自定义函数,必要参数request

配置:它需要被配置在 settings里 

提示:

  • 在django的上下文渲染器中,尽量不要写太重量级的代码,因为上下文渲染器的中代码,每一次请求都会执行一次,如果这个渲染器过重,会非常影响性能

 

TEMPLATES = [
  
        'OPTIONS': {
            # 模版中间件
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',  # 返回一个user对象,前端用来判断用户是否登陆. 前端通过 {% if user.is_authenticated %}, 没登录返回false, 这是通过django自带的管理器实现的
                'django.contrib.messages.context_processors.messages',
                'work_register.context_processors.my_ip' # 自定义的上下文管理器
            ],
        },
]

 自定义的管理器

def my_ip(request):
    if request.META.has_key("HTTP_X_FORWARDED_FOR"):
        ip = request.META["HTTP_X_FORWARDED_FOR"]
    else:
        ip = request.META["REMOTE_ADDR"]
    return {"ip1": ip}

 

posted on 2018-05-22 15:42  .Tang  阅读(208)  评论(0编辑  收藏  举报