模版中的变量由context中的值来替换,如果在多个页面模版中含有相同的变量,比如:每个页面都需要{{user}},笨办法就是在每个页面的请求视图中都把user放到context中。
 
  1. from django.temlate import loader,Context
  2. t = loader.get_template('xx.html')
  3. c = Context({'user':'zhangsan'})
  4. return HttpResponse(t.render(c))   #httpresponse
 
也可以简写为:
 
  1. from django.short_cuts import render_to_response
  2. render_to_response('xxx.html',{'user':'zhangsan'})
但是这样写不好的地方是就是造成代码的冗余,不易维护,此时就可以用Context的一个子类:django.template.RequestContext,在渲染模版的时候就不需要Context,转而使用RequestContext。RequestConntext需要接受request和processors参数,processors是context处理器的列表集合。
context处理器
 
  1. from django.template import RquestContext
  2. def custom_pros(request):   #context处理器
  3. return {'age':22,'user':request.user}
 
  1. #view 代码块
  2. c = RequestContext(request,{'name':'zhang'},processors=[custom_pros])
  3. return HttpResponse(t.render(c))
 
这样在每个试图中只需把custom_pros传递给RequestContext的参数processors就行了。如果是render_to_response与RequestContext结合使用,那么render_to_response接收参数context_instance.
 
  1. render_to_response('xxx.html',{'name':'zhang'},context_instance=RequestContext(request,processors[custom_pros])
但是这样还是很麻烦,代码的冗余并没有真正解决,你不得不在试图函数中明确指定context处理器,为此,Django提供了全局的context处理器。
 
全局context处理器
 
默认情况下,Django采用参数TEMPLATE_CONTEXT_PROCESSORS指定默认处理器,意味着只要是调用的RequestContext,那么默认处理器中返回的对象都就将存储在context中。
 
template_context_processors默认在settings文件中是没有的,而是设置在global_settings.py文件中,如果想加上自己的context处理器,就必须在自己的settings.py中显示的指出参数:TEMPLATE_CONTEXT_PROCESSORS
默认:
 
  1. TEMPLATE_CONTEXT_PROCESSORS = (
  2. 'django.contrib.auth.context_processors.auth',#django1.4  or after
  3. 'django.core.context_processors.auth',  #django1.4 before
  4. 'django.core.context_processors.debug',
  5. 'django.core.context_processors.i18n',
  6. 'django.core.context_processors.media',
  7. 'myapp.processor.foos',
  8. )
或者是:
 

  1. from django.conf import global_settings
  2. TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS +("myapp.processor.foos",)
此时,在试图中只要把request参数传递给RquestContext就ok了。

  1. render_to_response('xxx.html',{'age':33},context_instance=RequestContext(request))
系统在接受到该视图的请求时,自动执行处理器 “myapp.processor.foos",并把其返回值渲染到模版中。
参考:

Django RequestContext用法的更多相关文章

  1. django email用法

    在settings里面设置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_PORT = 25EMAIL_HOST ...

  2. django ImageField用法

    settings里的设置 PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname('__file__'))) MEDIA_ROOT = ...

  3. django inclusion用法

    概述: inclusion主要的是生成html标签, 返回的是一个字典,大分部跟simple_tag类似, simple_tag可返回任意类型的值 定义inclusion from django im ...

  4. django perm用法

    定义用户model时可以给用户分配权限: class Meta: permissions = (       ("can_mark", "Can mark"), ...

  5. django groupby 用法

  6. django的基本用法

    1.项目创建 # 新建一个文件夹DjangoProjects# 切换到需要的文件夹创建虚拟环境 C:\Projects\DjangoProjects>python -m venv test_ve ...

  7. Django用法补充

    1. 自定义Admin from django.contrib import admin from xx import models # 自定义操作 class CustomerAdmin(admin ...

  8. python中Django 使用方法简述

    Django是由Python写成的免费而且开源的Web应用框架--一堆零件的组成,可以帮助我们轻松的开发网站.这些零件都包括常用的:登录(注册,登入,登出),网站后台管理,表单,文件上传等.可以帮助我 ...

  9. Django(二)路由系统、视图、模板

    大纲 一.内容概要: 二.上节回顾 三.Django 视图–views  1.获取用户多个数据及文件上传  2.FBV 和 CBV  3.装饰器 四.Django模板补充  - Django模板语言循 ...

随机推荐

  1. C语言中的关键字

    1.C语言中的关键字都有实际的意义. 2.C语言中的23个关键字如下: char:声明字符型变量. short:声明短整型变量. int:声明整型变量. long:声明长整型变量. float:声明浮 ...

  2. Clearing Search Values

      Use the SearchClear() method which is part of the Field class to clear search values on a particul ...

  3. OpenFileDialog使用方法

    OpenFileDialog基本属性 AddExtension 控制是否将扩展名自动添加到文件名上 CheckFileExists 指示用户指定不存在的文件时是否显示警告 CheckPathExist ...

  4. Sublime Text 快捷键

    ctrl+shift+t:重新打开最近关闭文件 快捷键 功能 ctrl+shift+n 打开新Sublime ctrl+shift+w 关闭Sublime,关闭所有打开文件 ctrl+shift+t ...

  5. 2013-10-25笔记,css: mini-width, 标准居中,样式中*号使用,背景图像位置定位

    mini-width:设置元素的最小宽度.該屬性值會對元素的寬度設置一個最小限制.因此,元素可以比制定值寬,但不能比制定值窄.不允許指定負值. 完美的居中佈局: body{text-align: ce ...

  6. How to move the user document folder to D disk[Windows 7]

    when you install windows 7 OS, the system ask for you enter username and password, then you have not ...

  7. android ping网络是否成功

    public static boolean pingHost(String str) { //str 为要ping的IP地址 boolean result = false; try { Process ...

  8. NuGet 的使用

     install-package entityframework//Enable-Migrations -ContextTypeName College.Models.CollegeEntities  ...

  9. masterha_check_repl报错汇总

    [root@DBMysql ~]#masterha_check_repl --conf=/etc/masterha/app1.cnf 导致如下报错的原因主要有两类: 1.mysql的安装时用源码安装, ...

  10. Python脚本控制的WebDriver 常用操作 <四> 设置浏览器大小

    下面将使用webdriver来控制浏览器窗口的大小 测试用例场景 设置浏览器窗口的大小有下面两个比较常见的用途: 在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具进行结合,提升测试 ...