[django]自定义全局context
2016-03-25 22:41
357 查看
1. 创建一个context processor函数
新建一个文件命名为custom_processors.py,把它放到项目app文件夹(例如我的blog文件夹),添加一个返回字典的函数,其代码如下:from sets import Set from django.db.models import Count from .models import Category, Article def category(request): category = Category.objects.filter(article__status=0).values('name').annotate( num_article=Count('article')) return {'categories': category,}
2.修改 settings 文件
打开项目的settings.py文件,添加如下代码:TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates/')] , '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', 'blog.custom_processors.category', ], }, }, ]
3. 模板中添加自定义的变量
在要测试的模板里添加{{categories}},访问的时候就会变成我们赋予其的值了,代码如下:{% for category in categories %} <li class="list-group-item"> <span class="badge">{{ category.num_article }}</span> <a href="/category/{{ category.name }}">{{ category.name }}</a> </li> {% endfor %}
由于在CONTEXT_PROCESSORS添加的函数在settings里,即使你不调用它,所有的views都自动调用它,可能会带来性能影响,请酌情使用
相关文章推荐
- 关于OGR读取多边形-Polygon(GDAL 2.0版本之前)
- django-模型超级总结
- go语言学习心得
- zjnu1726 STOGOVI (lca)
- Django CSRF_TOKEN跨域攻击处理
- POJ 2195 Going Home (最小费用最大流)
- Go语言核心之美 3.4-Struct结构体
- GoDaddy重推CN域名注册服务
- GoDaddy重推CN域名注册服务
- hdu 5645 DZY Loves Balls
- hdu 5646 DZY Loves Partition
- Mastering the game of Go with deep neural networks and tree search 中文版来了
- codeforces_616D. Longest k-Good Segment(尺取法)
- Django-Model中的ForeignKey,ManyToManyField与OneToOneField
- go语言映射map的线程协程安全问题
- Django框架利用ajax实现批量导入数据功能
- 简学LINGO(三)——实例篇
- Django Url编码问题
- Vim - Go
- Google推荐的图片加载库Glide介绍