zoukankan      html  css  js  c++  java
  • django基础——上下文处理器

    当我们在views.py中写逻辑时,需要返回数据,但有时有些数据是每个页面都需要用的,如果每个方法中返回同样数据就会很冗余。这是就需要“上下文处理器“来统一返回数据。

    在上下文处理器中返回的每个变量,在每个页面都可以使用。

    如,博客中的导航、博客标题等信息,在每个页面可能都会用到,我们就可以写在上下文处理器中,代码如下:

    首先在工程目录下建一个py文件,如context_process.py(与settings.py同级):

    from user import models     #这个是数据库操作的模块,这里可以暂时忽略,想要了解可以去看数据库操作的博客
    def nav_title_process(request):
        # 上下文处理器 :这个函数里返回的每个变量,在每个页面都可以使用
        #需要在setting中的TEMPLATES中配置这个方法的路径
        # navs = ['我的相册', '我的日记', 'python', 'linux', '接口测试']
        navs=models.Nav.objects.filter(is_delete=1)   #这里是从数据库读出来的数据。query_Set 的对象,类似list
        title = 'HM的个人主页'
        content={'daohang':navs,'title':title}
        return content

    nav_title_process这个方法就是“上下文处理器”,返回的content的数据可以被任何一个html文件来使用。
    上下文处理器,需要在settings中部署一下路径

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')]   #控制html 路径在哪里
            ,
            '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',
                    'dj_Test.context_process.nav_title_process'           #context_processors数组中加上,上下文处理器的路径
                ],
            },
        },
    ]
  • 相关阅读:
    Cocos2dx for Windows Phone 8 发布
    Tiny Core Linux 4.7 发布
    走进 Google 的 Go 语言
    XCache 3.0.0 发布,PHP 性能提升方案
    Entropy Broker 2.0 发布,加密安全随机数
    Windows Phone 8 同步工具已提供,功能对比表
    PolarSSL 1.2.0 发布,SSL 加密库
    YUI 2 存在SWF漏洞,YUI 3 不受影响
    Google改进Dart并提供SDK
    Expression Blend实例中文教程(3) 布局控件快速入门Grid
  • 原文地址:https://www.cnblogs.com/hancece/p/11719441.html
Copyright © 2011-2022 走看看