2017-01-12 5 views
0

Django/Django-CMS에서 한 페이지에서 다른 페이지로 일부 데이터를 저장하려는 사이트가 있습니다. 나는 session 변수에 데이터를 저장하고 있습니다 :Django/Django-CMS 이전 값을 사용하는 세션 변수

request.session['yb_name'] = request.POST.get('name') 

문제는 가끔 내 페이지 얻을 대신 새로운 하나의 yb_name의 이전 값이다. 내 컨텍스트 프로세서에서 변수를 인쇄하고 그 값은 올바른 것이지만 템플릿에서 나와 이전 것을 보여줍니다. 이것은 매번 발생하지 않습니다. 또한 이것은 내가 만든 커스텀 플러그인의 템플릿 안에서 발생합니다.

나는 다음과 같은 템플릿에 인쇄 : 나는 시도

<input type="text" name="name" value="{{ request.session.yb_name|default_if_none:'' }}"> 

우선 다시 새로운 값을 생성 한 다음 변수를 삭제하는 것이 었습니다 :

if request.session.get('yb_name', None): 
    del request.session['yb_name'] 
request.session.modified = True 
request.session['yb_name'] = request.POST.get('name') 
request.session.modified = True 

을하지만 문제가 지속됩니다.

나는 무엇이 될 수 있겠습니까?

고마워요 :)

+0

왜 요청을 사용하고 있습니까? 탐색은 일반적으로 GET 요청을 사용하여 건너 뜁니다 ... –

+0

안녕 패트리샤, CMS 캐시를 해제 해보십시오. – Paulo

+0

@Paulo 고맙습니다. 내 문제가 해결되었습니다. – patricia

답변

0

@Paulo에서 제안한대로 CMS 캐시가 꺼졌습니다. 내 settings.py 파일에서 나는이 라인을 추가 :이 모든 캐시를 비활성화하지만 @brunodesthuilliers에 의해 제안이 생산에 나쁜 될 수 그래서 나는 Django-CMS 문서에 조금 검색 및 발견

CMS_PAGE_CACHE = False 
CMS_PLACEHOLDER_CACHE = False 
CMS_PLUGIN_CACHE = False 

을 사용하지 않도록 넣을 수 있습니다 설정 그냥 플러그인 : 내 세션 변수는 모든 CMS 캐시를 잃지 않고 내 문제를 해결 사용되는 플러그인에

class HistoryHeaderCMSPlugin(CMSPluginBase): 
    render_template = "plugins/history/header.html" 
    name = _("History Header") 
    model = HistoryHeaderPlugin 
    cache = False 

    def render(self, context, instance, placeholder): 
     context = super(HistoryHeaderCMSPlugin, self).render(context, instance, placeholder) 
     return context 

cache = False.

감사합니다.

+0

이것은 현재 귀하의 문제를 해결하는 데 도움이 될 수 있지만, 배포하는 즉시 다른 문제가 발생할 수 있습니다. 생산 및 심각한 트래픽을 시작합니다. 왜 django-cms가 캐싱을 사용하는지 이유가 있습니다 ... –

+0

@brunodesthuilliers 다른 해결책이 있습니까? – patricia

+0

@ brunodesthuilliers이고 양식 제출에서 'POST'를 사용하고 있습니다. – patricia