0

django プロジェクトの 1 つでMemcached ( python-memcachedバインディングを使用) を使用しています。シナリオは、私が持っているホームページにあります:

  • トップバー : (これには、ログインへのリンク / ユーザー名とプロファイルへのリンクが含まれます)
  • 検索フォーム
  • 結果のいくつかのブロック

現在、cache_page()次のようにデコレータを使用してページ全体をキャッシュしています。

@cache_page(3600)
def home(request):
    # View Code Goes Here

上記は期待どおりに機能しています。しかし、ホームページは一般にアクセス可能なページであるため、次のシナリオで問題に直面しています。

  1. 匿名ユーザーがホームページを要求します (ページがまだキャッシュされていない場合はキャッシュされます)。
  2. ユーザーがログインすると、ホームページにリダイレクトされます。
  3. キャッシュされたホームページが読み込まれます (ユーザーがログインする前にページがキャッシュされていたため、トップバーには、ログインしているユーザーの名前とプロファイル リンクではなく、ログイン リンクが表示されます)。

質問:

テンプレート レベルまたはビュー レベルで、decoratorの使用中にキャッシュしたくないブロックを指定できる方法はありますか?cache_page()

注意:上記のシナリオでは、{% cache %}テンプレート タグまたはcache.set各ブロックを使用できることを承知しています。cache_page()しかし、デコレータを使用できblock、特定のビューまたはテンプレートにキャッシュしたくないものを指定できるソリューションを特に探しています

4

1 に答える 1

0

CACHE_MIDDLEWARE_ANONYMOUS_ONLYを使用

ミドルウェア オプションのように聞こえますが、@cache_page にも影響します

于 2013-02-06T09:44:54.677 に答える