Кэшируются ли теги шаблонов Django? - PullRequest
2 голосов
/ 07 июня 2010

Я прошел (болезненный) процесс написания пользовательского тега шаблона для использования в Django. Он зарегистрирован как тег_ключения, чтобы он отображал шаблон. Однако этот тег ломается, как только я пытаюсь что-то изменить.

Я попытался изменить количество параметров и, соответственно, изменить параметры при его вызове. Ясно, что новый код тега не загружается, потому что выдается ошибка, указывающая на несоответствие количества параметров, и очевидно, что он пытается вызвать старую функцию.

Та же проблема возникает, если я пытаюсь изменить имя отображаемого шаблона и, соответственно, изменить имя шаблона на диске. Он продолжает пытаться вызвать старый шаблон. Я безуспешно пытался очистить старые файлы .pyc.

В целом, система работает так, как будто она кэширует теги шаблонов, вероятно, из-за команды register. Я копался в бесконечных нитях, пытаясь выяснить, так ли это, но все могли найти это. Джеймс Беннетт заявляет здесь , что register ничего не делает. Пожалуйста помоги!

Ответы [ 3 ]

2 голосов
/ 07 июня 2010

Я прошел (болезненный) процесс написания пользовательского тега шаблона для использования в Django

Я согласен, что процесс написания тега шаблона в django более сложный, чем должен быть.

Но позвольте мне указать вам на некоторые сторонние приложения, которые при установке тег шаблона - это просто еще одна функция (или класс) python.

http://github.com/alex/django-templatetag-sugar

http://github.com/codysoyland/django-template-repl

2 голосов
/ 07 июня 2010

Во-первых, я не представляю, что сложного в тегах включения. Написание полностью собственного тега с нуля, да: это сложно. Но теги включения - это просто три строки кода и шаблон - что в этом сложного?

Во-вторых, all Код Python в вашем проекте Django один раз загружается сервером [*] и остается до его перезапуска. Сервер dev обычно обнаруживает изменения и перезапускает себя для перезагрузки кода, но это не всегда работает. Вы должны привыкнуть проверять консоль, чтобы убедиться, что она перезагружается, и делать это вручную, если это необходимо. Обратите внимание, что это никак не связано с кэшированием.

[*] Строго говоря, один раз на процесс, но в любом случае сервер dev является однопроцессным.

1 голос
/ 07 июня 2010

В случае, если кто-то еще сталкивается с этим: точный механизм кэширования неясен, но перезапуск сервера django dev решает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...