Django 上下文处理器 笔记

上下文处理器是可以返回一些数据,在全局模板中都可以使用,比如登陆后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象。
在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.context_processors.messages:增加一个messages变量
5、django.template.context_processors.static:在模板中可以使用STATIC_URL
6、django.template.context_processors.csrf:在模板中可以使用csrf_token变量来生成一个csrf_token

自定义上下文处理器
有时候我们想要返回自己的数据,那么这时候我们可以自定义上下文处理器,自定义上下文处理器的步骤如下:
1、你可以根据这个上下文处理器是属于哪个app,然后在这个app中创建一个文件专门用来存储上下文处理器,比如context_processors.py。或者是你也可以专门创建一个Python包,用来存储所有的上下文处理器
2、在你定义的上下文处理器文件中,定义一个函数,这个函数只有一个request参数。这个函数中处理完自己的逻辑后,把需要返回给模板的数据,通过字典的形式返回。如果不需要返回任何数据,那么也必须返回一个空的字典

def frontuser(request):
	userid = equest.session.get("userid")
	userModel = models.FrontendUser.objects.filter(pk=userid).first()
	if userModel:
		return {"frontuser":userModel}
	else:
		return {}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值