Я хочу представить версии для файлов * stati c, чтобы браузер не кэшировал их, так как я буду вносить изменения довольно часто. Так что в настоящее время в моем index.html
я называю свои два файла index.css
и index.js
примерно так:
{% extends "base.html" %} {% load staticfiles %}
<link rel="stylesheet" href="{% static 'css/index.css' %}">
<script type="text/javascript" src="{% static 'js/index.js' %}"></script>
Теперь я хочу представить управление версиями таким образом, чтобы браузер был вынужден получать последние файлы, когда я обновить файлы с некоторыми изменениями. Конечно, это не означает, что он всегда должен получать новые файлы, но когда я это спрашиваю.
Так что для этого мне нужно зарегистрировать тег шаблона. Поэтому я создаю папку с именем templatetags
и держу ее на том же уровне, где находятся мои models.py
и urls.py
. (Хранение в другом месте Django выдает ошибку). Я называю файл как assign_version.py
. Это содержимое файла
import time
from django import template
register = template.Library()
@register.simple_tag
def static_version():
print("version changed!!")
version = int(round(time.time() * 1000))
return version
Папка templatetags
выглядит как
assign_version.py assign_version.pyc __init__.py __init__.pyc
Теперь я изменил свой index.html
, чтобы он ссылался на эти два тега, например
{% extends "base.html" %} {% load staticfiles %} {% load assign_version %}
<link rel="stylesheet" href="{% static 'css/index.css' %}?v={{ static_version }}">
<script type="text/javascript" src="{% static 'js/index.js' %}?v={{ static_version }}"></script>
Затем я перезагружаю свой сервер. Но ничего не происходит. Я не вижу print
, который я положил, чтобы подтвердить, вызывается ли этот шаблон при перезапуске. Также изменение js
или css
и перезапуск не заставляют браузер загружать новые файлы. Что я делаю не так?