Python Django在settings.py中基于会话的model-id值?

Python Django在settings.py中基于会话的model-id值?,python,django,Python,Django,我正在学习为在线商店构建产品购物车应用程序。 但当我阅读别人的应用程序时,我发现了一些我无法理解的东西 settings.py> CART_ID = 'cart_in_session' cart.py> from decimal import Decimal from django.conf import settings from shop.models import Product from coupon.models import Coupon class Kart(o

我正在学习为在线商店构建产品购物车应用程序。 但当我阅读别人的应用程序时,我发现了一些我无法理解的东西

settings.py>
CART_ID = 'cart_in_session'


cart.py>
from decimal import Decimal
from django.conf import settings
from shop.models import Product

from coupon.models import Coupon

class Kart(object):
    def __init__(self, request):
        self.session = request.session
        kart = self.session.get(settings.CART_ID)
        if not kart:
            kart = self.session[settings.CART_ID] = {}
        self.kart = kart
我无法获取这部分代码片段: 如果不是卡丁车: kart=self.session[settings.CART\u ID]={}


它有两个=符号,我想知道它是否用于分配,如果它真的是一个分配,那么为什么它会将CART_ID的值CART_in_session为其匹配的密钥CART_ID设置为{}

此语句既创建一个新的kart,又为CART创建会话密钥,将两者都设置为空CART{}

在python中,可以通过chaining=将多个变量指定给同一个值。和这三行一样:

temp = {}
kart = temp    
self.session[settings.CART_ID] = temp
因此,将kart和会话变量分配给同一个空字典

CART_ID是一个奇怪的名字。它基本上是用于在会话中存储卡的密钥。我会把它命名为CART\u KEY。这段代码所做的只是初始化一个空购物车并将其添加到会话中

注意:有关Python中链式赋值的更多信息,请参见

注2:因为我们正在分配一个字典,所以kart和session[CART_ID]都指向内存中的同一个字典。如果您通过添加产品来更改卡丁车,它将自动反映在会话中,反之亦然


注3:@DanielRoseman的代码使这一点更加清楚。

这不是很好的代码。最好是执行kart=self.session.setdefaultsettings.CART_ID,{}@Daniel Roseman谢谢您的帮助!我从来都不知道这个方法我很感激你的回答。所以这段代码在内存管理方面效率不高,因为它将两个不同的东西分配给同一个字典?