2017-01-12 3 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

なぜあなたはリクエストを使用していますか?POST?ナビゲーションは通常GETリクエストを使用してスキップします。 –

+0

こんにちはPatricia、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 

を無効に置くことができます設定ちょうどいくつかのプラグイン:

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はすべてCMSキャッシュを失うことなく、私の問題を解決しました。

ありがとうございました:)

+0

これはあなたの問題を今すぐ解決するかもしれませんが、いくつかの深刻なトラフィックを開始します。 django-cmsがキャッシュを使用する理由は... –

+0

@brunodesthuilliersには他の解決策がありますか? – patricia

+0

@ brunodesthuilliersと私は 'POST'を使っています。なぜならそのフォームからの投稿です。 – patricia

関連する問題