zoukankan      html  css  js  c++  java
  • Django上下文处理器

    什么是上下文处理器

    上下文处理器是可以返回一些数据,在全局模板中都可以使用。比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象。

    自定义上下文处理器

    你可以根据这个上下文处理器是属于哪个app,然后在这个app中创建一个文件专门用来存储上下文处理器。或者是你也可以专门创建一个Python包,用来存储所有的上下文处理器。

    这里我是专门创建一个Python包:context_processors.py。

    用我们的个人博客讲解,title和导航是需要共用的,编写我们的上下文处理器,也就是一个函数。

    def nav_title_process(request):
        '''上下文管理器,这个函数里面返回的每个变量,在每个页面里面都可以用'''
        navs = ['我的相册','我的日记','python','接口测试']
        title = '我的个人博客'
        content = {'daohang':navs,'title':title,}
        return content
    
    

    编写好这个函数之后,我们还需要在settings.py的TEMPLATES中去将我们的上下文处理器添加进去。

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            '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',
                    
                    # app名.上下文处理器的文件名.上下处理器的函数名
                    'testDjango.context_processors.nav_title_process'
                ],
            },
        },
    ]

    这样,我们就定义好了我们自己的上下文处理器。

    定义好了我们的上下文处理器之后,我们就可以直接在前端使用了,在views中也不用编写相关的代码了。

     本文转载自

    https://blog.csdn.net/xujin0/article/details/84796149 

  • 相关阅读:
    【python中调用shell命令使用PIPE】使用PIPE作为stdout出现假卡死的情况——将stdout重定向为输出到临时文件
    二分查找
    MongoDB安装及启动
    Python文件IO(普通文件读写)
    Python面向对象--高级(二)
    Python面向对象--高级(一)
    Python类与对象--基础
    Python生成器、装饰器
    Python函数式编程
    Python函数及参数
  • 原文地址:https://www.cnblogs.com/haifeima/p/11886326.html
Copyright © 2011-2022 走看看