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}
  • 相关阅读:
    Makefile学习
    Tmux使用
    Linux进程管理学习资料
    Linux内存管理学习资料
    Python常用的软件包
    Docker 学习
    Intel处理器技术文档
    Firefly-RK3399笔记
    Linux Kernel API
    ARM 技术文档
  • 原文地址:https://www.cnblogs.com/tangpg/p/9072398.html
Copyright © 2011-2022 走看看