码迷,mamicode.com
首页 > 其他好文 > 详细

上下文管理器

时间:2020-07-29 10:20:28      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:get   auth   代码   拼接   def   逻辑   djang   turn   数据库   

上下?处理器是可以返回?些数据,在全局模板中都可以使 ?。?如登录后的??信息,在很多??中都需要使?,那 么我们可以放在上下?处理器中,
就没有必要在每个视图函 数中都返回这个对象。 在 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 {} 

 

上下文管理器

标签:get   auth   代码   拼接   def   逻辑   djang   turn   数据库   

原文地址:https://www.cnblogs.com/topass123/p/13395056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!