十二. Django 上下文处理器 2021-03-18

十二. Django 上下文处理器

1.什么是上下文处理器

在模板中想要使用的变量是从视图函数中的context这个上下文的参数中传递进来的,每个视图函数需要什么参数就传什么参数.

上下文处理器就是创建模板变量.

上下文处理器在项目文件中的setings.py文件的TEMPLATES中,他的作用是可以给每一个模板都提供相同的变量

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'template')],
        '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',
            ],
        },
    },
]
  • django.template.context_processors.debug:附加一个debug变量,其值为settings.DEBUG的值;附加一个sql_queries变量,在模板中可以通过该变量查看请求当前页面时数据库执行的sql语句;
  • django.template.context_processors.request:附加一个request变量,封装了当前页面发送请求时的request对象,一般用来获取当前页面的路径;
  • django.contrib.auth.context_processors.auth:通过Django内置的用户系统,给上下文附加一个user对象;
  • django.contrib.messages.context_processors.messages:增加一个messages变量;

2.自定义上下文处理器

在刚才的中间件的例子中((5条消息) 十一.Django的中间件 2021-03-18_明玥几时有的博客-CSDN博客),我们给request 增加了一个myuser的属性,

而如果每个模板中也就是每个页面上都需要用到登录用户名这个变

量名的话, 那么我们也可以把这个变量在上下文处理器中将变量传给模板. 

1.实现过程

1.在主目录下创建了一个.py的文件.

2.在.py的文件中创建一个myuser的函数

3.必须传入request这个参数

4.必须返回一个字典类型的对.

2.注册上下文处理器

mysite是项目名,先找到文件所在的位置,把自定义的上下文处理器的函数添加到TEMPLATES->OPTIONS->context_processors中。

3.总结: 自定义中间件与上下文处理器

我们刚才分别用中间件和上下文完成了跟登录用户有关的例子, 最后的结果都是能在页面上显示用户的用户名了.

  • 中间件是在用户请求到响应的过程中去加入一些额外的逻辑功能,

例子中给request增加了一个myuser的属性.

  • 上下文是给所有的模板增加变量

例子中给模板增加了一个myuser的变量.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值