2016-06-30 9 views
0

私はDjangoCMSを使ってウェブサイトを開発しており、CustomPluginsを使って完全にフロントエンドで編集可能です。キャッシングdjango cms CustomPlugin

特定のプレースホルダ内にあるプラグインをキャッシュしないようにする回避策があるのだろうかと思っていました。

のは、私がCustomPluginがあるとしましょう、と私はそれは私がやりたいことはありません、私のCustomPluginの定義における{% static_placeholder 'special_placeholder' %}
cache = Falseフラグ内にある場合(私はこのプラグインを必要以外、このプラグインはどこでもキャッシュされたいです含まれているプレースホルダによってキャッシュされるかどうか)。グローバル設定CMS_PLUGIN_CACHECMS_PLACEHOLDER_CACHEは私のニーズに合っていません。

これについていくつかのヒントを教えていただければ本当に感謝しています。

答えて

0

あなたはあなたの答えのために、この直接あなたのプラグインクラスの内部

class YourPlugin(CMSPluginBase): 
    model = YourCustomPluginModel 
    render_template = 'yourapp/yourtemplate.html' 

    def render(self, context, instance, placeholder): 
     # you can cache "your_data" depending on 'placeholder' here 

     context.update({ 
      'instance': instance, 
      'placeholder': placeholder, 
      'your_data': your_data 
     }) 
     return context 

plugin_pool.register_plugin(YourPlugin)

+0

感謝を制御することができます。しかし、プラグインがキャッシュされている場合、 'render'メソッドは呼び出されません。私はすでにレンダリングでいくつかのコンテキスト変数を設定していますが、プラグインがキャッシュにあるかどうかによって、プラグインはキャッシュされているため、格納されません。 – alamasfu10

+0

@ÁlvaroLamasFuenteできません。あなたは、プラグイン全体をキャッシュするか、キャッシングを取り除いて、あなたの内部で 'render'のコンテキストをキャッシュします – doniyor

関連する問題