2013-05-30 7 views
1

내 웹 사이트에는 익명 사용자와 로그인 한 사용자가 동일한 목록이 있습니다. 세션 사전을 사용하여 데이터를 저장합니다. 그러나 로그 아웃 할 때 django.contrib.auth.views.logout은 session.flush()를 사용하므로 세션 값을 잃습니다 ..... 세션을 제거하여 사용자 정의 로그 아웃을 만들면 .flush(), 로그 아웃 할 수 없습니다. 누군가가 flush()를 오버라이드 (override)하는 방법 또는 익명 및 로그인 한 사용자에 대한 공통 목록을 작성할 수있는 다른 방법을 알려줄 수 있습니까?django- 익명 및 로그인 한 사용자에 대한 공통 목록을 유지하는 방법

+0

호기심에서 벗어나, 어디에서 오는 목록 값이 있습니까? 모델의 객체? 왜 그것들을 세션에 첨부해야합니까? 작업에 따라 더 좋은 방법 일 수 있습니다. – Austin

+0

yup .. 값은 개체에서 얻은 것입니다. 기본적으로 내 웹 사이트에 제품이 있습니다. 나는 익명 사용자와 로그인 한 사용자에게 동일하게 남아 있어야하는 후보 목록을 작성 중입니다. –

+0

사용자와 익명 사용자가 목록에 추가 할 수 있습니까? 아니면 자신 만의 설정입니까? 후자의 경우 lists = Products.objects.all()을 사용하여 템플릿의 컨텍스트에 'lists'를 추가하고 세션을 어지럽히 지 않고 출력 할 수 있습니다. 나는 아직도 당신이 여기서 세션을 사용하는 이유를 모르겠다. – Austin

답변

2

def logout_view(logout): 
    # Do whatever pre conditions you have here. 
    my_list = request.session['user_list'] 
    logout(request) 
    # Now Django would have flushed your previous sessions and created a new session. 
    request.session['user_list'] = my_list 
    return HttpResponse() # Or render to response i.e whatever you do. 

지금 세션이 익명 사용자 작성되고 있는지 확인 'USER_LIST'라는 목록을 가지고 말할 수 있습니다. 그리고 나머지는 모두 작동합니다. 희망은 당신을 위해 않습니다.

+0

그래 .. 그게 ... 고마워. –

+0

환영합니다. 대답을 좋아한다면 투표 해주세요. –