“的用法;如果不是x:做点什么;在Django/Python中
我找到了下面这个问题的一个非常有用的答案,但我不太清楚。 根据我对“如果不是x:做点什么”的理解,“如果不是”只是检查x的值是否为真。如果不是,它会有所作为 我正在学习Django,在我试图理解的一个例子中,他们使用“如果不是:”逻辑来设置购物车 下面是比我聪明得多的人如何编写代码: 在settings.py文件中:“的用法;如果不是x:做点什么;在Django/Python中,python,django,Python,Django,我找到了下面这个问题的一个非常有用的答案,但我不太清楚。 根据我对“如果不是x:做点什么”的理解,“如果不是”只是检查x的值是否为真。如果不是,它会有所作为 我正在学习Django,在我试图理解的一个例子中,他们使用“如果不是:”逻辑来设置购物车 下面是比我聪明得多的人如何编写代码: 在settings.py文件中: CART_SESSION_ID = 'cart' 在cart.py文件中: from django.conf import settings class Cart(objec
CART_SESSION_ID = 'cart'
在cart.py文件中:
from django.conf import settings
class Cart(object):
def __init__(self, request):
"""
Initialize the cart.
"""
self.session = request.session
cart = self.session.get(settings.CART_SESSION_ID)
if not cart:
# save an empty cart in the session
cart = self.session[settings.CART_SESSION_ID] = {}
self.cart = cart
所以在我看来,CART\u SESSION\u ID最初是一个值为“CART”的字符串
变量cart必须是一个字典,用于存储产品ID、价格和数量
由于“cart”的初始值是一个带值的字符串,“if not cart:”会返回“True”,因此,永远不会执行?是的,在您的示例中它是多余的,因为在
django by example
教程中没有使用实际的会话处理机制
实际上必须实现的想法是,当购物车seision\u ID
为False
或None
时,它将执行,因此必须创建一辆新车,以便生成默认购物车(空dict)
所以,是的,你是对的,在你的例子中,if行永远不会执行,但这个例子永远不会在现实世界的应用程序中使用。是的,它在你的例子中是多余的,因为在
django by example
教程中没有使用实际的会话处理机制
实际上必须实现的想法是,当购物车seision\u ID
为False
或None
时,它将执行,因此必须创建一辆新车,以便生成默认购物车(空dict)
因此,是的,您是对的,在您的示例中,if行永远不会执行,但这个示例永远不会在现实世界的应用程序中使用。
not x
对于x
是以下元组中的任何元素(可能不限于):(None,0,0L,0.0,“,(),[],set(),{})
。在Django的例子中,有更多这样的例子:例如,如果x
将是一个空的QuerySet
。尝试打印cart
(self.session.get(..
)的值(可能还有类型?)。这与settings.cart\u session\u ID
无关。因此,您所说的“self.session.get(settings.cart\u session\u ID)”不会返回“cart”这是在settings.py文件中分配的?如果是这样,为什么在settings.py文件中声明了CART\u SESSION\u ID='CART'。我不确定self.SESSION是什么(我说它是dict,因为调用了它的get
方法),这就是我建议打印的原因(或者如果您正在使用IDE逐步调试)因此,self.session.get('cart')
可能会返回None
。但在我看来,您混淆了设置。cart\u session\u ID
的值'cart'
和变量cart
(来自\uu init\uu
)。它们根本不相关。not x
对于x
是以下元组中的任何元素(可能不限于):(None,0,0L,0.0,”,(),[],set(),{})
。在Django的情况下,有更多这样的情况:例如,x
将是空的QuerySet
。请尝试打印该值购物车的(self.session.get(..
)(可能还有类型?)。这与设置.cart\u session\u ID
无关。因此,您所说的“self.session.get(settings.cart\u session\u ID)”不返回“cart”这是在settings.py文件中分配的?如果是这样,为什么在settings.py文件中声明了CART\u SESSION\u ID='CART'。我不确定self.SESSION
是什么(我说它是dict,因为调用了它的get
方法),这就是我建议打印的原因(或者如果您正在使用IDE逐步调试)因此,self.session.get('cart')
可能会返回None
。但在我看来,您混淆了设置。cart\u session\u ID
的值'cart'
与变量cart
(from\uu init\uuuu
)没有任何关联。