2015-07-29 1 views
2

J'utilise Django 1.8 et je voudrais commencer à utiliser le cache du système de fichiers de Django, avec a per-view cache in the URLconf.Django: utiliser le cache par vue dans l'URLconf?

Ceci est mon urls.py en ce moment:

urlpatterns = patterns(
    '', 
    url(r'^api/1.0/spending$', 
     'frontend.views.views_api_spending.total_spending_on_substance', 
     name='total_spending'), 

C'est ce que je suis en train:

urlpatterns = patterns(
    '', 
    url(r'^api/1.0/spending$', 
     cache_page(60 * 15)('frontend.views.views_api_spending.total_spending_on_substance'), 
     name='total_spending'), 

Mais je reçois une erreur: TypeError at /api/1.0/spending: 'str' object is not callable. Si je supprime les guillemets, j'obtiens: NameError at /api/1.0/spending: name 'frontend' is not defined.

Comment puis-je adapter mon fichier urls pour commencer à utiliser la mise en cache par vue?

Répondre

0

Pour ce faire, vous devez importer la fonction total_spending_on_substance vue dans votre urls.py puis passe total_spending_on_substance fonction en vue de cache_page décorateur au lieu d'une chaîne.

cache_page est un décorateur et il attend une fonction de vue. Donc, enveloppez la fonction d'affichage total_spending_on_substance avec cache_page lorsque vous faites référence à celle-ci dans l'URLconf.

Vous pouvez effectuer les opérations suivantes:

from frontend.views.views_api_spending import total_spending_on_substance # import the view function 

urlpatterns = patterns(
    '', 
    url(r'^api/1.0/spending$', 
     cache_page(60 * 15)(total_spending_on_substance), # pass function instead of string 
     name='total_spending'),