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 {} 
  • 相关阅读:
    ACM ICPC 2008–2009 NEERC MSC A, B, C, G, L
    POJ 1088 滑雪 DP
    UVA 11584 最短回文串划分 DP
    POJ 2531 Network Saboteur DFS+剪枝
    UVa 10739 String to Palindrome 字符串dp
    UVa 11151 Longest Palindrome 字符串dp
    UVa 10154 Weights and Measures dp 降维
    UVa 10271 Chopsticks dp
    UVa 10617 Again Palindrome 字符串dp
    UVa 10651 Pebble Solitaire 状态压缩 dp
  • 原文地址:https://www.cnblogs.com/topass123/p/13395056.html
Copyright © 2011-2022 走看看