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谢谢您的帮助!我从来都不知道这个方法我很感激你的回答。所以这段代码在内存管理方面效率不高,因为它将两个不同的东西分配给同一个字典?