明瞳 2019-12-30
在views中的重复代码可以在上下文管理器中实现
实现的逻辑是 首先请求过来先走url指定的函数也就是views中的函数,然后在去走我们指定的上下文管理器中的逻辑 ,最后渲染到页面中 如下:
我们在工程的user目录下新建一个.py文件(process_content.py)然后将实现的逻辑写在这个文件下 ,实现完逻辑需要在settings-templates-options中导入一下
总结:
使用场景:模板继承可以减少页面内容的重复定义,实现页面内容的重用。个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用。但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的。我们可以通过自定义上下文处理器来解决。
结构:上下文管理器文件名一般为context_processors.py,def xx(request) 为一个自定义函数,必要参数request,将里面的内容以字典的形式返回给所有模板,模板通过 {{ key }}取值。
配置:它需要被配置在 settings里
提示:在django的上下管理器中,尽量不要写太重量级的代码,因为上下文渲染器的中代码,每一次请求都会执行一次,如果这个渲染器过重,会非常影响性能