2016-03-18 9 views
0

私は簡単なWebアプリケーションでdjangoキャッシュフレームワークを実装する方法を学んでいました。データベースへのDjango per-viewキャッシング

私はpostgresqlデータベースを使用しました。私はmy_cache_tableを作成しました。 "per-view cache"テクニックを使用しようとしましたが、動作しません。 my_cache_tableにデータベースエントリが作成されていません。

#settings.py 
MIDDLEWARE_CLASSES = [ 
'django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

# Database 
DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'dbname', 
     'USER': 'username', 
     'PASSWORD': 'password', 
     'HOST': 'localhost', 
     'PORT': '', 
    } 
} 

CACHES = { 
    'default': { 
     'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 
     'LOCATION': 'my_cache_table', 
     'TIMEOUT': 3600, 
     'OPTIONS': { 
      'MAX_ENTRIES': 1000 
     } 
    } 
} 

#urls.py 
    urlpatterns = [ 
    url(r'^$', views.search_form), 
    url(r'^s', cache_page(60 * 60)(views.search)), 

] 

#views.py 
from .scraper import scrape 
from django.views.decorators.cache import cache_page 

def search_form(request): 
    return render(request, 'scraper/search_form.html') 

def search(request): 
q = request.GET["k"] 
ftitles, fprices, furls = scrape(q) 
context = {'ftitles': ftitles, 'fprices': fprices , 'furls': furls , 'q': q} 
return render(request, 'scraper/output.html', context) 

これは私のウェブアプリがどのように機能するかである -

1.Userは

2.Keywordを検索するためのキーワードを入力するには、スクリプト「scrape.py」に送信され、処理され、出力がレンダリングされると、 output.htmlページに表示されます。

私の質問 -

  • 検索ビューで発生屈強なプロセスを回避することができるので、私は、検索ビューの応答をキャッシュすることができればそれは素晴らしいことです。

  • キャッシュされた同じキーワードをユーザーが検索すると、そのプロセスを回避してキャッシュから応答を表示できます。

  • 私がここで行方不明です何を指摘してください私は、URLでパー・ビューキャッシュを使用してみましたが、それは

  • を動作しません。

助けていただければ幸いです。

答えて

0

解決策が見つかりました。誰かを助けるかもしれないと投稿しています。

url.pyファイルにキャッシュデコレータをインポートするのを忘れていました なぜrunserverが私に以前にエラーを投げなかったのだろうと思います。今日はそれが私にエラーを投げた。

NameError: name 'cache_page' is not defined 

私のurls.pyビューごとのキャッシュを更新した後、超細工しました。

from django.views.decorators.cache import cache_page 

何か私は学んだ - あなたのcmdを再起動し、その後、サーバーを再起動します。

関連する問題