기본 세션 serializer가 json 인 django 1.6을 사용하고 있습니다. db를 세션 용 스토리지 엔진으로 사용합니다.
피클을 사용할 정도로이 설정을 변경했습니다. 자, 다음을 읽은 후 : http://www.benfrederickson.com/2014/02/12/dont-pickle-your-data.html
나는 속도 측면에서 큰 차이에 놀랐다.
나는 pickle의 보안 문제를 알고 있지만, 사용자로부터 오는 데이터를 직렬화하지 않기 때문에 현재로서는 그다지 신경 쓰지 않으며 내 웹 사이트는 그다지 유명하지 않습니다.django 세션 serializer 도움 pickle/json 중 선택
내 코드와 내가 이런 종류 세션에서 저장 확인했습니다
문자열 (확인 JSON에 대한)
부울 (확인 JSON에 대한)
날짜 (JSON에 대한 확인,하지만 난으로 전환 할 수 없습니다 문자열을 읽고 필요할 때 구문 분석)
render 객체 (HttpRespone. json에서는 not ok).
내가 마지막으로 저장 한 유형을 해결할 수 있다면 json으로 이동할 수 있습니다. 기본적으로 문제는 다음과 같습니다.
SQL 쿼리를 실행하여 일부 페이지를 생성합니다. 이 페이지에는 동일한 SQL 출력이 필요한 iframe (google maps)이 있습니다. 그래서 동일한 SQL을 두 번 수행하지 않으려 고합니다. 그래서 동일한 컨텍스트와 쿼리 출력을 사용하여 동일한 뷰에서 두 페이지를 '렌더링'하고, iframe을로드하면 이미 생성 된 페이지를 세션에서 가져옵니다 .
어떻게해야합니까? 동일한보기에서 페이지를 생성하는 솔루션은 무엇입니까?
편집 :
이것은 설명 된 경우입니다.
index.html을가 <iframe src='/map/'>
하여 생성 된 index.html 포함 뷰는 다음
은 index.html을 그것에 iframe이되어 있기 때문에, 다른 GET 요청을 전송한다def index(request):
output = sql_query
return render_to_response('index.html', {'data':output})
이 도달 할 보기 :
def map(request):
# Here I need the same sql output I had from the index view.
# I don't want to perform this sql again.
# So what I did is to create the page in index view, store it in the session,
# and just return the page from the session. like this:
return request.session['rendered_page_from_index_view']
내가 pickle serializer로 변경 한 이유입니다. 게다가 json을 사용할 수 있습니다. 동일한 SQL을 두 번 사용하지 않고이 페이지를 세션에 저장하지 않으려면 어떻게해야합니까?
제 요점을 분명히 밝히기를 바랍니다.
당신이 세션에서 이러한 정보를 어떻게 저장할 것인가? 장고에는 필요한 것을 거의 할 수있는 캐싱 엔진이 있습니다. – petkostas