New session is creating every time I visit the cart. Django REST Framework

34 Views Asked by At

I want 1 session for 1 anonymous user. The thing is, every time I enter cart endpoint, session does not save. Cookie sessionid is creating only when I log in to admin panel.

 # views.py in cart app

def get_or_create_cart(request):
    if request.user.is_authenticated:
        token, created = Token.objects.get_or_create(user=request.user)
        cart, _ = Cart.objects.get_or_create(user_token=token)
    else:
        if not request.session.session_key:
            request.session.create()
        session_key = request.session.session_key
        print(session_key)
        cart, _ = Cart.objects.get_or_create(session_key=session_key)
        cart.session_key = session_key
        cart.save()

    return cart



@api_view(['GET', 'POST', 'PUT', 'DELETE'])
def cart_view(request):
    cart = get_or_create_cart(request)

    if request.method == 'GET':
        cart_items = CartItem.objects.filter(cart=cart)
        serializer = CartItemSerializer(cart_items, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)
    ...


 # settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication', 
    ],
}

SESSION_ENGINE = "django.contrib.sessions.backends.db"  
SESSION_COOKIE_NAME = "sessionid"  
SESSION_COOKIE_SECURE = False
SESSION_SAVE_EVERY_REQUEST = True```
0

There are 0 best solutions below