Django-kas-purge-hakies is 'n herbruikbare Django app kas ongeldigmaking te hanteer.
Hierdie inligting verskaf basies 'n meganisme om maklik te haak in die model verifikasie van jou front-end kas ongeldig wanneer dit nodig is.
Tans is slegs 'n vernis backend geïmplementeer word, maar die ontwerp is geskep met ander moontlike back ends in gedagte.
Gebruik
Voeg 'cache_purge_hooks' aan jou INSTALLED_APPS.
#our voorgee model
klas Post (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; slak = models.SlugField (unieke = True, MAX_LENGTH = 200)
& Nbsp; liggaam = models.TextField (leeg = True, nul = True)
van cache_purge_hooks invoer cache_purge_hook
cache_purge_hook (Post)
Soos hierbo getoon, cache_purge_hooks module bevat 'n funksie cache_purge_hook. Slaag in die eerste argument 'n model. Die kas meganisme piggy-rug op die model byvoorbeeld se get_absolute_url () metode en goedkeuring van die backend kas vir daardie spesifieke url.
As enige geval het verskeie verwante urls, definieer 'n persoonlike get_absolute_urls () metode wat gee 'n lys van URLs ongeldig:
klas Kategorie (models.Model):
& Nbsp; name = models.CharField (MAX_LENGTH = 200)
& Nbsp; slak = models.SlugField (unieke = True, MAX_LENGTH = 200)
& Nbsp; title = models.CharField (MAX_LENGTH = 127 leeg = True)
& Nbsp; def get_absolute_url (self):
& Nbsp; & nbsp; & nbsp; terugkeer omgekeerde ("kategorie", kwargs = {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Kategorie": self.slug
& Nbsp; & nbsp; & nbsp; })
& Nbsp; def get_absolute_urls (self):
& Nbsp; & nbsp; & nbsp; Gau = self.get_absolute_url ()
& Nbsp; & nbsp; & nbsp; terugkeer [Gau, omgekeerde ('blog_home'),]
In die bogenoemde model, ons het 'n blog post Kategorie model. Dit is get_absolute_url () metode is gekoppel aan 'n bepaalde naam roete omskryf in urls.py, maar enige verandering aan die kategorie moet ook in die blog tuisblad weerspieël word (sê byvoorbeeld die tuisblad bevat 'n kode wolk van alle kategorieë). Dat die bladsy moet ongeldig word wanneer hierdie inligting verander.
Kennis jy ook uitdruklik gryp die get_absolute_url () waarde. Dit sal nie genoem te raak as get_absolute_urls () bestaan.
As dit is nie na jou smaak, kan jy ook slaag as 'n 2de argument 'n funksie wat 'n geval en gee 'n lys van URLs te purge_related_blog.
Byvoorbeeld:
van facebook_comments.models invoer FacebookCommentCache
def purge_related_blog (byvoorbeeld):
& Nbsp; pr = urlparse.urlparse (instance.url)
& Nbsp; terugkeer [pr.path,]
cache_purge_hook (FacebookCommentCache, purge_related_blog)
Dit is ook nuttig omdat dit in die geval hierbo, is die terrein gebruik te maak van 'n ander herbruikbare app (facebook_cached_comments). . Dit is baie beter as die inbraak 'n derde party-kode 'n get_absolue_urls te voorsien ()
Vereistes :
- Python
- Django
- python-vernis
Kommentaar nie gevind