zoukankan      html  css  js  c++  java
  • django-上下文渲染器,将后端内容提供给模板使用,自定义渲染器

    使用场景:当同一个类容需要出现在多个模板中, 上下文管理器就是将这个内容以字典的形式返回给所有模板模板通过 {{ 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}
  • 相关阅读:
    怎么看到数据库以前做过的日志?
    感觉很好的网站
    uview 滑动切换
    Flyweight享元(结构型模式)
    悟空,真的是空?
    Interpreter解释器(行为型模式)
    Proxy代理(结构型模式)
    [转]有一种爱叫索取
    Command命令(行为型模式)
    Composite组合(结构型模式)
  • 原文地址:https://www.cnblogs.com/tangpg/p/9072398.html
Copyright © 2011-2022 走看看