Django 模板 自定义context_processors
Django版本
1.8.4
为什么要自定义context_processors
在做博客的过程中,在浏览排行,评论排行,标签,文章归档,友情链接等内容每一个显示页面都是要显示的。如果在每一个views的处理函数当中都返回以上信息,这就造成了严重的代码冗余。因此就把他们设置成所有的模板视图都能够访问,这有点像全局变量。
知识上的准备
在Django中可以通过设置context_processors,使到每一个模板视图被渲染时,都传相对应的Context值。
步骤
1.全局Context返回函数
在myApp下,创建context_processors.py文件, 并创建函数。
def global_setting(request):
# 文章归档数据
archive_list = Article.objects.distinct_date()
.......
return locals()
2. 修改settings.py
在TEMPLATES中的context_processors列表当中添加该自定义的global_setting函数,添加过后,当每一次进行模板视图渲染时,都会把在函数global_setting中对应的Context传递到模板视图中。另外的不创建context_processors.py文件也可以,只要把自定义的函数路径加入到context_processors就可以了,但是那样不方便管理,不推荐那样做
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'blog/templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
# 全局上下文信息
'blog.context_processors.global_setting',
],
},
},
]
3. 视图逻辑
通过render_to_response()渲染时,需要指定context_instance=context_instance=RequestContext(request)
,若不指定全局的Context将不会传递给相对于的模板视图, 通过render()渲染就不需要指定context_instance
def index(request):
try:
# 最新的文章数据,并分页
article_list = get_page(request, Article.objects.all(), number=10)
except Exception as e:
logger.error(e)
return render(request, 'index.html', locals())
参考
作者:Ljian1992
链接:https://www.jianshu.com/p/fa558c8d14cb
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
Django 模板 自定义context_processors的更多相关文章
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
上回精彩回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...
- django模板-自定义标签、过滤器
自定义标签或者过滤器的步骤 ①将要创建自定义标签或过滤器的app加入settings文件的installed_apps中 ②在app中创建templatetags目录,类型为包即packages ③在 ...
- Django模板—-自定义过滤器和标签
一.filter和simple_tag 1.在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 2.在app中创建template ...
- [django]模板中自定义变量&django模板中的变量
django自定义模板变量 context_processors.py def mysetings(request): return { 'NAME': 'maotai' } settings.py ...
- Django——模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
前言:当我们想在页面上给客户端返回一个当前时间,一些初学者可能会很自然的想到用占位符,字符串拼接来达到我们想要的效果,但是这样做会有一个问题,HTML被直接硬编码在 Python代码之中. 1 2 3 ...
- python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)
昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...
- Django(模板语言-自定义filter和simple_tag)
Django(模板语言-自定义filter和simple_tag) filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. ...
- Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介
没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...
- django 笔记8 url模板 自定义函数 simple_tag
感谢alex老师~ 知识点: URL - 两个没见 url>路由系统> 函数或类 > 返回字符串 Form表单提交: 提交 >url>函数或类中的方法 -.. HttpR ...
随机推荐
- Linux下文件名正常,下载之后在windows打开为乱码
说明:在Linux下编码为utf-8,在windows下位GBK 1. 2. 3. 4. 5. 6. 7. 8.
- XSS前置课程--同源策略
什么是同源策略: 在用户浏览互联网中的网页的过程中,身份和权限的思想是贯穿始终的 同源策略(Same-Origin Policy),就是为了保证互联网之中,各类资源的安全性而诞生的产物,它实际上是一个 ...
- windows下如何快速优雅的使用python的科学计算库?
Python是一种强大的编程语言,其提供了很多用于科学计算的模块,常见的包括numpy.scipy.pandas和matplotlib.要利用Python进行科学计算,就需要一一安装所需的模块,而这些 ...
- Gmail上不去怎么办?
近期非常多人反映Gmail上不去.每到重大政治事件附近,国家的防火墙就会加固一些. 事实上仅仅要下一个软件就能够轻松解决Google.Gmail上不去的问题. 下载地址 下载解压后点击"我要 ...
- mysql 相关博客地址
MySQL概念学习与逐步上手操作系列(一套完整) https://www.cnblogs.com/zlslch/category/962962.html
- vagrant 介绍,安装与使用
可以帮你统一团队成员的开发环境.如果你或者你的伙伴创建了一个Vagrantfile,那么你只需要执行vagrant up就行了,所有的软件都会安装并且配置好.团队成员可以通过相同的Vagrantfil ...
- IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯(二)
IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯(二) IdentityServer4 用户中心生成数据库 上文已经创建了所有的数据库上下文迁移代码 ...
- C#使用for循环移除HTML标记
public static string StripTagsCharArray(string source) { char[] array = new char[source.Length]; int ...
- lamp环境的搭建和配置
安装apache httpd-2.2.31.tar.gz rpm -qa|grep httpd ##卸载旧的httpd httpd--.el6.centos.x86_64 httpd-tools- ...
- mybatis 运算符转义收录
在ibatis配置文件写SQL语句的时候对于一些比如“<”,">","<>","&"," ' &q ...