我正在学习为在线商店构建产品购物车应用。 但是当我阅读别人的应用程序时,发现了一些我听不懂的东西。
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_ID] = {}
它有两个“ =”符号,我想知道它是否用于分配,是否确实是一个分配,那么为什么将CART_ID的值(其匹配的键CART_ID的值“ cart_in_session”)设置为{}
答案 0 :(得分:1)
此语句既创建了新的kart
,也为购物车创建了会话密钥,并将它们都设置为空的购物车{}
。
您可以通过在python中链接=
来将多个变量分配给相同的值。与以下三行相同:
temp = {}
kart = temp
self.session[settings.CART_ID] = temp
因此将kart
和会话变量都分配到同一空字典。
CART_ID
是一个奇怪选择的名称。基本上,这是用于在会话中存储卡的密钥。我将其命名为CART_KEY
。这些代码所做的只是初始化一个空购物车并将其添加到会话中。
注意:有关Python中链式分配的更多信息,请参见here。
注2:由于我们正在分配字典,因此kart
和session[CART_ID]
都指向内存中的同一字典。如果您通过添加产品来更改kart
,它将自动反映在会话中,反之亦然。
注3:@DanielRoseman的代码使这一点更加清楚。