django-cache-purge-kroker er en gjenbrukbar Django app for å håndtere cache ugyldig.
Dette programmet gir i utgangspunktet en mekanisme for enkelt å koble inn modell callbacks å oppheve front-end cache når det trengs.
Foreløpig bare en lakk backend er implementert, men designet ble laget med andre mulige backends i tankene.
Bruk
Legg 'cache_purge_hooks' til din INSTALLED_APPS.
#our late modell
klasse Post (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; slug = models.SlugField (unikt = True, MAX_LENGTH = 200)
& Nbsp; Kroppen = models.TextField (blank = True, null = True)
fra cache_purge_hooks import cache_purge_hook
cache_purge_hook (Post)
Som vist ovenfor, inneholder cache_purge_hooks modul en funksjon cache_purge_hook. Pass på så det første argumentet en modell. De cache mekanisme piggy-backs på modellen forekomst sin get_absolute_url () metode og klarner backend cache for den aktuelle url.
Hvis noen eksempel har flere relaterte nettadresser, definere et tilpasset get_absolute_urls () metode som returnerer en liste over nettadresser for å oppheve:
klasse Kategori (models.Model):
& Nbsp; name = models.CharField (MAX_LENGTH = 200)
& Nbsp; slug = models.SlugField (unikt = True, MAX_LENGTH = 200)
& Nbsp; title = models.CharField (MAX_LENGTH = 127, blank = True)
& Nbsp; def get_absolute_url (egen-):
& Nbsp; & nbsp; & nbsp; returnere revers ("kategori", kwargs = {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Kategori": self.slug
& Nbsp; & nbsp; & nbsp; })
& Nbsp; def get_absolute_urls (egen-):
& Nbsp; & nbsp; & nbsp; gau = self.get_absolute_url ()
& Nbsp; & nbsp; & nbsp; tilbake [gau, reverse ('blog_home'),]
I modellen ovenfor, har vi et blogginnlegg Kategori modell. Det er get_absolute_url () Metoden er knyttet til en bestemt navngitt rute definert i urls.py, men eventuelle endringer i den kategorien må også gjenspeiles i bloggen hjemmesiden (si for eksempel, inneholder hjemmesiden en tag cloud av alle kategorier). At siden må oppheves når denne informasjonen er endret.
Legg merke til at du må også eksplisitt ta tak i get_absolute_url () verdi. Det vil ikke bli kalt hvis get_absolute_urls () eksisterer.
Hvis det er ikke slik du vil, kan du også passere som en andre argument for å purge_related_blog en funksjon som tar en forekomst og returnerer en liste over nettadresser.
For eksempel:
fra facebook_comments.models importere FacebookCommentCache
def purge_related_blog (eksempel):
& Nbsp; pr = urlparse.urlparse (instance.url)
& Nbsp; tilbake [pr.path,]
cache_purge_hook (FacebookCommentCache, purge_related_blog)
Dette er også nyttig fordi i tilfellet ovenfor, er nettstedet benytter en annen gjenbruk app (facebook_cached_comments). . Dette er mye bedre enn hacking opp en tredjepart kode for å gi en get_absolue_urls ()
Krav :
- Python
- Django
- python-lakk
Kommentarer ikke funnet