北京海思通科技有限责任公司
业务:haisitong@163.com
技术:470942293@qq.com
网址:http://www.haisitong.net/
QQ: 2223793800 470942293
Django开发网站,通常都是通过views完成参数到模板template的传递。
存在问题:
(1)如果多个模板页面都需要同一个(些)参数时,就需要在每个views中定义参数、传递参数;
(2)如果使用模板继承时,父模板中的大量动态数据(如导航动态数据、登录用户信息等)就需要在每个views中来定义、传递参数;
这样传递参数比较繁琐,也不利于项目维护,Django提供的上下文处理器context_processors就是处理这类问题的。
接下来通过例子讲述。
1.常规处理方法
比如有两个模板页面:t1.html t2.html,都需要keyword、description两个参数,那么对应的views定义如下图:
然后,在对应的t1.html、t2.html页面中就可以使用如下代码直接引用:
{{ keyword }} {{ description}}
2.使用context_processors处理方法
比如有两个模板页面:t1.html t2.html,都需要keyword、description两个参数。
接下来使用上下文处理器context_processors完成参数传递。
(1)创建上下文处理器
最对应的app下面创建一个python文件,命名为context_processors.py(也可以命名为其他文件名),如下图:
在context_processors.py文件编写如下方法定义:
(2)在settings配置文件中配置上下文处理器
打开项目的settings配置文件,在context_processor中添加自定义的上下文处理器,格式为:app_name.context_file_name.def_name,如下图:
(3)直接使用
在对应的t1.html、t2.html页面中就可以使用如下代码直接引用:
{{ keyword }} {{ description}}