【发布时间】:2017-01-20 07:19:05
【问题描述】:
我有一个非常简单的实用函数,如果它们是一个名为“orderId”的会话密钥,它会获取一个打开的网络订单,如果没有会话密钥,它将创建一个,并且参数“createIfNotFound”在功能。用我的调试器单步执行它,我可以看到在创建订单后设置会话密钥的那段代码确实会毫无例外地被命中,但是当我检查 Http 请求对象的会话字段时,它没有该属性?
实用程序
def get_open_web_order(request, createIfNotFound=False):
# Check for orderId in session
order_id = request.session.get('orderId')
web_order = None
if None != order_id:
try:
web_order = WebOrder.objects.get(id=order_id, status='O')
logging.info('Found open web order')
except WebOrder.DoesNotExist:
logging.info('Web order not found')
if (None == web_order) and (createIfNotFound == True):
logging.info('Creating new web order')
web_order = WebOrder()
web_order.status = 'O'
web_order.save()
request.session['orderId'] = web_order.id
# Assign logged in user and default billing and shipping
if request.user.is_authenticated() and hasattr(request.user, 'customer'):
customer = request.user.customer
web_order.customer = customer
web_order.set_defaults_from_customer()
web_order.save()
return web_order
【问题讨论】:
-
嵌入式 Shopify 应用程序发生在我身上。 Safari 默认会阻止 3rd 方 cookie,禁用此功能似乎可以解决问题。
标签: python django session view