[英]Django's session-based model - id value in settings.py?
我正在學習為在線商店構建產品購物車應用。 但是,當我閱讀他人的應用程序時,發現了一些我聽不懂的東西。
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:kart = self.session [settings.CART_ID] = {}
它有兩個“ =”符號,我想知道它是否用於分配,是否確實是分配,那么為什么將CART_ID的值(其匹配的鍵CART_ID設置為“ cart_in_session”)設置為{}
該語句既創建了新kart
又創建了購物車的會話密鑰,將二者均設置為空的購物車{}
。
您可以通過在Python中鏈接=
將多個變量分配給相同的值。 與以下三行相同:
temp = {} kart = temp self.session[settings.CART_ID] = temp
因此,將kart
和session變量都分配給相同的空字典。
CART_ID
是一個奇怪選擇的名稱。 基本上,這是用於在會話中存儲卡的密鑰。 我會把它命名為CART_KEY
。 這些代碼所做的只是初始化一個空購物車並將其添加到會話中。
注意:有關Python中的鏈式分配的更多信息,請參見此處 。
注意2:由於我們要分配字典,因此kart
和session[CART_ID]
指向內存中的同一字典。 如果您通過添加產品更改kart
,它將自動反映在會話中,反之亦然。
注意3:@DanielRoseman的代碼使這一點更加清晰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.