惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
D
DataBreaches.Net
F
Fortinet All Blogs
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
M
MIT News - Artificial intelligence
美团技术团队
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Cloudflare Blog
有赞技术团队
有赞技术团队
L
LangChain Blog
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
S
SegmentFault 最新的问题
V
Visual Studio Blog
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
B
Blog
I
InfoQ

碎言

不懂就别瞎掰掰:【程序员的常识】写的什么玩意? AI 辅助编程下的程序设计与代码编写 使用 Next.js 和 Tailwind CSS 构建可编辑和删除的 ToDo 待办事项应用 探索编程新境界:MarsCode 助你一臂之力 使用 Next.js 和 Tailwind CSS 搭建静态图片展示站点并部署到 Vercel AI 辅助编程:免费工具的优缺点及官网一览 GitHub push更新总是失败,写个python脚本解决 把博客从GitHub迁移到到了vercel ComfyUI 和 Flux.1 安装与使用教程 Flux.1 入门必知:硬件、环境、模型 Git项目的子文件夹中的内容无法同步到远程仓库的解决方法 blender流体Fluid使用中没有流体、流体穿模等一些问题的解决方法 博客聚合网站:积薪,竟然关闭了! blender日常使用中的一些技巧 虽然只有我自己在用,但还是更新了碎言博客的源代码, 与其在迷茫中困惑,不如在努力中前进 差点忘了我还有一个博客... 秧歌、博客和AI 终于熬到了新手上路 好久没有更新博客了。。。 老妈大腿骨骨折,最近一直在医院护理 Hello, September! Ubuntu开机自动启动Docker容器运行WordPress Docker 简单快速安装部署WordPress Docker下安装MySQL 加碘盐能防核辐射的话,还怕什么核战争? shields.io 一个简洁、一致、清晰的徽章 Ubuntu下使用root登录ssh的设置 GitHub Actions 构建、部署 Next.js项目 我又用回了"IE"--edge
Django 4.2 复习笔记(九)使用Django的上下文处理器(context ...
J.sky · 2023-06-05 · via 碎言

web站点的上下文对于新手可能有些陌生和晦涩,这个东西有什么用?上下文就是一个变量或是函数,在整个web站点中都可以调用并获取其中定义的值。在Django中,全局上下文(Global Context)是指在每个视图中都可用的全局变量或函数,可以在模板中直接访问。Django提供了一种机制来定义全局上下文,使得这些变量或函数在所有的模板中都可以使用。

要定义全局上下文,可以使用Django的上下文处理器(context processor)。上下文处理器是一个Python函数,它接收一个HttpRequest对象作为参数,并返回一个包含上下文变量的字典。这个字典将会被添加到每个模板的上下文中。

  1. 创建一个Python文件,例如”myapp/context_processors.py”。

  2. 在文件中定义一个函数,接收一个HttpRequest对象作为参数,并返回一个包含上下文变量的字典。例如:

    def my_global_context(request): return { ‘site_name’: ‘suiyan_blog’ }

  3. 在Django的配置文件(settings.py)中找到TEMPLATES设置。在OPTIONS部分的context_processors列表中添加你的上下文处理器的路径。例如:

    TEMPLATES = [ { ‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’, ‘DIRS’: [], ‘APP_DIRS’: True, ‘OPTIONS’: { ‘context_processors’: [ … ‘myapp.context_processors.my_global_context’, … ], }, }, ]

  4. 现在,你可以在任何模板中使用my_variable变量。例如,在一个模板文件中:

     <p>{{ my_variable }}</p>

Django的上下文可以用来定义类似博客每个页面上的站点和站长资料、分类、标签集合、底部版权信息等,这样在整个web的站点访问任何地方都可以调用,极大的方便了开发者编写开发web站点的对应功能。