【问题标题】:Django per-view caching to databaseDjango 按视图缓存到数据库
【发布时间】:2016-07-05 19:28:13
【问题描述】:

我正在学习如何在我的简单 Web 应用程序中实现 django 缓存框架。

我使用过 postgresql 数据库并创建了 my_cache_table。 我尝试使用“按视图缓存”技术,但它不起作用。 尚未在 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.用户输入关键字进行搜索

2.Keyword被发送到脚本“scrape.py”并处理,输出呈现并显示在页面output.html中。

我的问题 -

  • 如果我可以缓存搜索视图响应,这样就可以避免搜索视图中发生的繁重过程。

  • 所以当用户搜索已缓存的相同关键字时,可以从缓存中显示响应,避免该过程。

  • 我尝试在 url 中使用按视图缓存,但它不起作用

  • 请指出我在这里遗漏了什么。

感谢任何帮助。

【问题讨论】:

    标签: python django postgresql caching


    【解决方案1】:

    找到了解决方案,我发布它是因为它可能对某人有所帮助。

    问题是我忘记在 url.py 文件中导入缓存装饰器 我想知道为什么 runserver 之前没有给我一个错误。那么今天它确实给我带来了错误。

    NameError: name 'cache_page' is not defined 
    

    更新我的 urls.py 后,按视图缓存工作得非常好。

    from django.views.decorators.cache import cache_page
    

    我学到的东西 - 重启你的 cmd 然后重启你的服务器。

    【讨论】:

      猜你喜欢
      • 2013-08-18
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2012-04-24
      • 2012-03-10
      • 2011-09-26
      相关资源
      最近更新 更多