簡體   English   中英

Django的基於會話的模型-settings.py中的id值?

[英]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:由於我們要分配字典,因此kartsession[CART_ID]指向內存中的同一字典。 如果您通過添加產品更改kart ,它將自動反映在會話中,反之亦然。

注意3:@DanielRoseman的代碼使這一點更加清晰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM