Django 1.2 führte einen neuen Template Loader ein, der Daten im Cache speichert ( django.template.loaders.cached.Loader
).
Leider habe ich keine Informationen darüber gefunden, wie der Cache ungültig wird und wann und wie er zurückgesetzt wird.
Ich möchte dies auf meinem Server verwenden, aber ich bin mir nicht sicher, ob es beim Neustart von django zurückgesetzt würde (das wäre genug für mich).
Wenn Sie in die Quelle von django eintauchen, können Sie feststellen, dass die Vorlagenlader für die aktuelle Serverinstanz unter django.template.loader.template_source_loaders
gespeichert sind.
Wenn Sie einen gecachten Loader verwenden, gibt es nur einen Loader. So können Sie es erhalten und ruft seine Reset-Funktion, um Vorlage Cache zurücksetzen.
Hier sind einige Code-Schnipsel, ich habe es nicht selbst getestet.
%Vor% Wenn Sie django.template.loaders.cached
überprüfen, können Sie sehen, dass django einfach eine Variable template_cache
verwendet, um den Vorlagennamen im Vorlagenpfadcache zu speichern. Es verwendet nicht memcached. So sollte es zurückgesetzt werden, wenn Django neu starten.
Nur diese Lösung wird garantiert funktionieren, einschließlich der Produktionsumgebung, ohne Neustart des Servers und selbst wenn Sie 'django.template.loaders.cached.Loader'
backend verwenden:
Dies ist ein expliziter absoluter Import, der zum Patchen globaler Variablen verwendet werden kann. Sie können sicher sein, dass andere Antworten falsch sind, nachdem {% include 'some_template' %}
template tag verwendet wurde (Cache von 'some_template'
wird nicht zurückgesetzt, nachdem loader.reset()
verwendet wurde, wobei loader
nur Iterator von template_source_loaders
ist, importiert durch relativen Import.
Ich habe diese Methode verwendet, um die in der Datenbank gespeicherten Vorlagen zu entwerten (erstellt von django-dbtemplates Bibliothek) und welche von {% include %}
template tag in normale Templates eingebunden.
Tags und Links django memcached django-templates