Django的基于会话的模型-settings.py中的id值?

时间:2019-08-14 17:27:11

标签: 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(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”)设置为{}

1 个答案:

答案 0 :(得分:1)

此语句既创建了新的kart,也为购物车创建了会话密钥,并将它们都设置为空的购物车{}

  • 您可以通过在python中链接=来将多个变量分配给相同的值。与以下三行相同:

    temp = {}
    kart = temp    
    self.session[settings.CART_ID] = temp
    

    因此将kart和会话变量都分配到同一空字典。

  • CART_ID是一个奇怪选择的名称。基本上,这是用于在会话中存储卡的密钥。我将其命名为CART_KEY。这些代码所做的只是初始化一个空购物车并将其添加到会话中。

注意:有关Python中链式分配的更多信息,请参见here

注2:由于我们正在分配字典,因此kartsession[CART_ID]都指向内存中的同一字典。如果您通过添加产品来更改kart,它将自动反映在会话中,反之亦然。

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