Я использую PostgreSQL с Django 2.2.
Я пытаюсь установить идентификатор корзины в сеансе, но каждый раз, когда сеанс не получает никакого значения, пока пользователь входит в систему или нет. Даже если я пытался открыть сайт в режиме инкогнито, sessionid cook ie не создается анонимными пользователями. Из-за этого каждый раз создается новая корзина, в которой пользователь входит или нет.
views.py
def index(request):
context = {}
res = getCart(request)
context.update(res)
return render(request, 'index.html', context)
def getCart(request):
lines = []
order = {}
cartQuantity = 0
if request.session.get('cart'):
cart = Cart.objects.get(pk=request.session.get('cart'),state='draft')
lines = cart.cartlines_set.all()
cartQuantity = int(cart.getQuantity)
if not order:
cart = Cart.objects.create(customer_id=request.user, state='draft')
request.session['cart'] = cart.id
lines = cart.cartlines_set.all()
cartQuantity = int(cart.getQuantity)
return {'lines': lines, 'cart':cart, 'cartQuantity': cartQuantity}
** url.py **
urlpatterns = [
path('', shop, name="shop"),
]
settings.py
SESSION_SAVE_EVERY_REQUEST = True
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Custom moduels
'cart.apps.cartConfig',
]