上下文
1、上下文:Django视图函数传递给模板的数据叫做上下文(即content参数)
2、一般来说,一个视图函数传递给模板的数据(上下文),只能在该模板中使用,其他模板是不能使用这些数据的(模板之间无继承、引用关系)
⑴A模板引用了B模板,即,B模板中的HTML代码以"变量"的形式添加到A模板中,此时B模板就相当于是A模板中的一部分
⑵因此A模板视图函数传递给A模板的数据,在B模板中是可以使用的
⑶注:即使C模板同时引用了B模板,但是C模板依旧不能使用A模板中的变量
3、URL、视图函数、模板之间的关系:
⑴一般情况下一个URL对应一个视图函数、一个视图函数对应一个模板
⑵视图函数传递给模板的数据(上下文)只能在视图函数对应的模板中使用,其他模板是不能使用这些数据的
⑶上下文数据(content参数)是在HttpResponse对象中与模板一起传递下来的,所以模板只能使用自己的上下文(其他模板都没有接受到这些数据,肯定就没法使用了)
⑷A视图函数对应(引用)a模板,B视图函数对应(引用)b模板,那么A视图函数传递给a模板的数据(content参数)就只能在a模板中使用,b模板是不能使用这些数据的
例1:
⑴编辑视图
⑵编辑模板
⑶编辑模板
⑷编辑URL映射
⑸访问:index页面
⑹访问:demo页面
注:
1、从上面的例子中可以看出:视图函数传递给模板的数据(上下文)只能在视图函数对应的模板中使用,其他模板是不能使用这些数据的
⑴当然还需要注意下:在模板中接收上下文时 所使用的的变量名是正确的(与视图函数中定义的键名一致)
2、如果有一些数据(上下文)在很多模板中都会用到,那么岂不是需要在每个视图函数中都获取一次,然后再传递给视图函数对应的模板了么?这样的话,岂不是代码重复率就会很高了。为了解决这个问题,就有了我们这里需要学习的"上下文处理器"
3、在编写Django视图函数时,我们一般会在视图函数中以Python字典(dict)形式向模板中传递需要被调用或使用的变量并指定渲染模板,通常情况下,我们向模板的传递的字典变量与模板是一一对应的关系
4、有时我们还需要向模板传递全局变量,即每个模板都需要使用到的变量(比如站点名称, 博客的最