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

    上下⽂处理器是可以返回⼀些数据,在全局模板中都可以使 ⽤。⽐如登录后的⽤⼾信息,在很多⻚⾯中都需要使⽤,那 么我们可以放在上下⽂处理器中,
    就没有必要在每个视图函 数中都返回这个对象。 在 settings.TEMPLATES.OPTIONS.context_processors 中 ,有许多内置的上下⽂处理器。
    这些上下⽂处理器的作⽤如 下:
        1. django.template.context_processors.debug :增 加⼀个 debug 和 sql_queries 变量。在模板中可以通 过他来查看到⼀些数据库查询。 
        2. django.template.context_processors.request : 增加⼀个 request 变量。这个 request 变量也就是在 视图函数的第⼀个参数。
        3. django.contrib.auth.context_processors.auth : Django 有内置的⽤⼾系统,这个上下⽂处理器会增加 ⼀个 user 对象。
        4. django.contrib.messages.context_processors.mes sages :增加⼀个 messages 变量。
        5. django.template.context_processors.media :在 模板中可以读取 MEDIA_URL 。⽐如想要在模板中使⽤上 传的⽂件,
        那么这时候就需要使⽤ settings.py 中设置 的 MEDIA_URL 来拼接 url 。⽰例代码如下: <img src="" /> 6. django.template.context_processors.static :在 模板中可以使⽤ STATIC_URL 。 7. django.template.context_processors.csrf :在模 板中可以使⽤ csrf_token 变量来⽣成⼀个 csrf token 。

    自定义:

    有时候我们想要返回⾃⼰的数据。那么这时候我们可以⾃定 义上下⽂处理器。⾃定义上下⽂处理器的步骤如下: 
    1. 你可以根据这个上下⽂处理器是属于哪个 app ,然后在 这个 app 中创建⼀个⽂件专⻔⽤来存储上下⽂处理器。 ⽐如 context_processors.py 。
      或者是你也可以专⻔ 创建⼀个 Python包 ,⽤来存储所有的上下⽂处理器。
    2. 在你定义的上下⽂处理器⽂件中,定义⼀个函数,这个 函数只有⼀个 request 参数。这个函数中处理完⾃⼰的 逻辑后,把需要返回给模板的数据,
      通过字典的形式返 回。如果不需要返回任何数据,那么也必须返回⼀个空 的字典。⽰例代码如下
    def frontuser(request):    
        userid = request.session.get("userid")    
        userModel = models.FrontendUser.objects.filter(pk=useri d).first()                    
        if userModel:     
            return {'frontuser':userModel}    
        else:      return {} 
  • 相关阅读:
    苹果手机 iframe 无法滚动bug
    网页实现文件下载的一些方法
    Document对象中的一些重要的属性和方法(笔记)
    window对象中的一些重要的属性和方法(笔记)
    JS中的继承
    利用XMLHttpRequest(XHR)对象实现与web服务器通信
    JS对象中的原型
    JS中this的指向
    JS中的作用域和闭包
    HTML5新增的本地存储功能(笔记)
  • 原文地址:https://www.cnblogs.com/topass123/p/13395056.html
Copyright © 2011-2022 走看看