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 {} 
  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/topass123/p/13395056.html
Copyright © 2011-2022 走看看