django-上下文处理器

自定义上下文处理器

如果想要返回自己的数据, 可以自定义上下文处理器

  • 首先要确保浏览器保存了cookie或者session数据
    自定义上下文处理器步骤:
    1.根据上下文处理器属于哪个app, 在这app中创建一个py文件专门存储上下文处理器
    2.在定义的上下文处理器文件中定义一个函数, 这个函数只有一个request参数, 这个函数处理完成自己的逻辑后, 把需要的数据通过字典的形式返回, 如果不返回任何数据那么必须返回一个空的字典

  • app下创建一个py文件

  • 定义函数
    在这里插入图片描述

  • settings中配置定义好的上下文处理器
    在这里插入图片描述

  • 前端的代码,需要判断传递过去的字典是否为真
    在这里插入图片描述

内置的上下文处理器

在项目的settings.py中定义了django内置上下文处理器
在这里插入图片描述

  • ‘django.template.context_processors.debug’
    当debug模式开启时, 模板中可以通过debug来查看一些数据库
  1. settings.py中定义常量 : INTERNAL_IPS = ['127.0.0.1']
  2. 模板可以调用 {{ debug }} 和 {{ sql_queries }}
  3. debug 返回的布尔值True, sql_queries中返回sql查询的一些信息
  • ‘django.template.context_processors.request’
    可以在模板中调用request对象的方法和属性
    例如: {{ request.path}} 可以直接调用

  • ‘django.contrib.messages.context_processors.messages’
    django内置的用户系统 返回一个字典中包含了用户信息, 用户权限
    可以在模板中调用

  • django.contrib.messages.context_processors.messages
    messages上下文处理器可以给前端返回错误的消息

导入messages

from django.contrib import messages

messages的使用

messages.add_message(request, messages.INFO, '错误的信息内容')
或者: messages.info(request, '错误的消息内容')
info是代表的消息级别, 消息有五大级别如: debug等等

在这里插入图片描述
返回给前端是一个消息列表, 需要遍历才能提取里面的数据
注意点:messages参数,后端并未通过render渲染的方式传递, 因为已经内置了messages上下文处理器, 所以django底层会帮助我们传递
在这里插入图片描述

  • django.template.context_processors.media
    使用media上下文处理器可以在模板中读取MEDIA_URL
    前提是: 上传文件的settings配置也是配置好了
    在这里插入图片描述
    {{ MEDIA_URL }}代表的是上传文件保存的文件夹的绝对路径, 然后只需填入文件名字就可以显示在模板上,
    如果是在模型中, 直接调用{{ 模型类. 字段 }}在后面拼接即可

  • ‘django.template.context_processors.static’
    在上下文处理器中定义了static可以在模板中使用STATIC_URL的,就是配置好的static路径
    在这里插入图片描述

  • django.template.context_processors.csrf
    使用了这个上下文,可以在表单中生成一个csrf_token的变量,
    跟{% csrf_token %}类似, 但是在定义了这个上下位处理器,可以在非表单中使用, {% csrf_token %}只能在表单中使用
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值