zoukankan      html  css  js  c++  java
  • Django项目使用 context_processors 处理全局变量

    项目的开发过程中,总是会使用一些公共信息显示在所有的页面,例如商城购物车的数量。这些数据来自数据库,且不同用户数据各部相同,可以采用 Django 的 context_processors 解决该问题,context_processors 会在模板渲染之前,先执行其中的内容,以达到获取数据的目的。

    以购物车数量为例

    • 新建 context_processors 文件
    # project/app/context_processors.py
    
    from .models import Cart
        
    def cart_list(request):
    	"""这里写需要的全局变量,直接返回querydict,方便取数据"""
        cart = Cart.objects.filter(user=request.user.id)
        return {"cart": cart}
    
    • settings.py 中注册 context_processors
    # settings.py
    
    TEMPLATES = [
        {
            ...
            'OPTIONS': {
                'context_processors': [
                    ...
                    "app_name.context_processors.cart_list"  # 注册
                ],
            },
        },
    ]
    
    • 这样就可以在所有的模板中使用 cart 变量啦
    {{cart|length}}
    
  • 相关阅读:
    四级英语day9
    123
    像程序员一样思考
    Kali
    OS X
    Effective Java
    DHU ACM OJ
    Ambari
    Hadoop
    Hadoop2
  • 原文地址:https://www.cnblogs.com/izbw/p/12380069.html
Copyright © 2011-2022 走看看