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

Django之上下文处理器

时间:2019-01-19 17:37:40      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:自己的   没有   template   通过   ges   用户信息   os.path   setting   python   

上下文处理器是用来返回一些在全局模板中都可以使用的数据,比如登入后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象了。

步骤1:在APP内新建一个python文件(或者单独创建一个python包用来管理所有的上下文处理器)

步骤2:在python文件中定义个函数,只有一个参数(request),函数中处理完自己的逻辑后,把需要返回的数据通过字典的形式返回,如果没有数据返回就返回一个空字典。

步骤3:在setting中注册(TEMPLATES→OPTIONS→context_processors),格式是APP名字.文件名.函数名

如下定义一个获取用户名的上下文:

context_processors.py

from front.models import User

def front_user(request):
    user_id = request.session.get("user_id")
    context = {}
    if user_id:
        try:
            user = User.objects.get(pk=user_id)     
            context["front_user"] = user     
        except:
            pass
    return context

注册:

TEMPLATES = [
    {
        BACKEND: django.template.backends.django.DjangoTemplates,
        DIRS: [os.path.join(BASE_DIR, templates)]
        ,
        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,
                "front.context_processors.front_user"          //注册自己的上下文
            ],
        },
    },
]

模板中的使用:

 {% if front_user %}
        {{ front_user.username }}
    {% else %}
        没有
    {% endif %}

 

Django之上下文处理器

标签:自己的   没有   template   通过   ges   用户信息   os.path   setting   python   

原文地址:https://www.cnblogs.com/yan-peng/p/10292090.html

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