2013-04-21 1 views
4

현재 선택 항목과 핸들러 클래스 (하위 클래스는 object)를 저장하고 선택을 처리하는 다른 페이지로 리디렉션하는 관리 작업이 있습니다. 그러나 어떤 이유로이 작업을 수행 할 때마다 전체 세션이 손실됩니다.Django 세션이 갑자기 데이터를 잃습니다.

실제로 어떤 세션 키도없는 view_function을 호출하는 동안 오류가 발생합니다. 'action_options'. 실제로 발생하는 것을 들여다 보아 변수는 세션에서 적절하게 설정되지만보기가 호출 될 때까지는 세션이 완전히 비어 있습니다. 이전에 분명히 있던 관리자 로그인을 포함하여 세션은 완전히 비어 있습니다. 다른 모든 페이지 (즉, 내장 관리 페이지)는 정상적으로로드됩니다. 여기

는 작업입니다 :

def myaction(self, request, queryset): 
    opts = request.session.setdefault('action_options', {}) 
    opts['queryset'] = queryset 
    opts['handler'] = MyHandlerClass 
    request.session.modified = True 
    return HttpResponseRedirect(reverse('myapp.views.handler_view')) 

그리고 여기에 옵션을 설정 현재 그냥 인쇄보기,이다 :

def handler_view(request): 
    opts = request.session['action_options'] 
    return HttpResponse(str(opts)) 

나는 또한, 직접 즉 request.session['queryset'] = queryset을의 검색어를 저장하는 시도,하지만 난 같은 행동을 취하십시오. 그러나 기본 키 목록을 저장하면 해당 키가 삭제됩니다. 나는 다음과 같은 구성으로, 조니 캐시를 사용하고

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 

    'johnny.middleware.LocalStoreClearMiddleware', 
    'johnny.middleware.QueryCacheMiddleware', 
) 

: 참고로

가 여기 내 미들웨어 정의의 IT가 실행되기 전에

CACHES = { 
    'default' : dict(
     BACKEND='johnny.backends.memcached.MemcachedCache', 
     LOCATION=['127.0.0.1:11211'], 
     JOHNNY_CACHE=True, 
    ) 
} 
JOHNNY_MIDDLEWARE_KEY_PREFIX = 'jc_myproj' 

답변

0

의 검색어, 직렬화 및 저장할 수 없습니다 세션에서.

opts['queryset'] = list(queryset) 

이것은 목록으로 만들지 만 여전히 직렬화 및 비 직렬화가 가능한지 여부는 문제입니다. 기본적으로 세션 데이터는 일반 텍스트입니다. 그에 따라 계획하십시오.

관련 문제