django-cache-purge-kroge er en genbrugelig Django app til at håndtere cache ugyldiggørelse.
Denne app dybest set giver en mekanisme til nemt at tilslutte til den model tilbagekald at ugyldiggøre din front-end cache efter behov.
I øjeblikket er kun en lak backend gennemføres, men designet er skabt med andre mulige backends i tankerne.
Anvendelse
Tilføj "cache_purge_hooks 'til din INSTALLED_APPS.
#our foregive model
class Post (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; Slug = models.SlugField (unik = True, MAX_LENGTH = 200)
& Nbsp; krop = models.TextField (blank = True, null = True)
fra cache_purge_hooks import cache_purge_hook
cache_purge_hook (Post)
Som vist ovenfor, cache_purge_hooks modul indeholder en funktion cache_purge_hook. Pass på som det første argument en model. Cache mekanisme piggy-backs på model Instans get_absolute_url () metode og sender backend cache for den pågældende url.
Hvis nogen instans har flere beslægtede webadresser, definere en brugerdefineret get_absolute_urls () metode, der returnerer en liste med webadresser til at afkræfte:
klasse Kategori (models.Model):
& Nbsp; name = models.CharField (MAX_LENGTH = 200)
& Nbsp; Slug = models.SlugField (unik = True, MAX_LENGTH = 200)
& Nbsp; title = models.CharField (MAX_LENGTH = 127, blank = True)
& Nbsp; def get_absolute_url (selv-):
& Nbsp; & nbsp; & nbsp; tilbage omvendt ("kategori", kwargs = {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Kategori": self.slug
& Nbsp; & nbsp; & nbsp; })
& Nbsp; def get_absolute_urls (selv-):
& Nbsp; & nbsp; & nbsp; Gau = self.get_absolute_url ()
& Nbsp; & nbsp; & nbsp; tilbage [Gau, omvendt ('blog_home «)]
I ovenstående model, har vi et blogindlæg Kategori model. Det er get_absolute_url () metode er bundet til en bestemt navngivet rute defineret i urls.py, men enhver ændring i kategori skal også afspejles i bloggen hjemmeside (sige for eksempel hjemmesiden indeholder en tag sky af alle kategorier). Siden skal gøres ugyldig, når disse oplysninger er ændret.
Bemærk du skal også eksplicit fat værdien get_absolute_url (). Det vil ikke blive kaldt hvis get_absolute_urls () eksisterer.
Hvis det ikke er til din smag, kan du også gå som en 2. argument at purge_related_blog en funktion, der tager en instans og returnerer en liste med webadresser.
For eksempel:
fra facebook_comments.models importerer FacebookCommentCache
def purge_related_blog (eksempel):
& Nbsp; PR = urlparse.urlparse (instance.url)
& Nbsp; tilbage [pr.path,]
cache_purge_hook (FacebookCommentCache, purge_related_blog)
Dette er også nyttig, fordi i ovennævnte sag, er det websted anvender en anden genanvendelig app (facebook_cached_comments). . Det er meget bedre end hacking op en tredjepart kode til at give en get_absolue_urls ()
Krav :
- Python
- Django
- python-lak
Kommentarer ikke fundet