Я модифицировал этот проект Django с открытым исходным кодом для собственного использования. У них есть этот собственный пользовательский тег шаблона, и в функции рендеринга узла они имеют что-то вроде следующего:
plate = resolve_variable(self.plate, context)
context.push()
context['self'] = plate
template = Template(f(str))
result = template.render(context)
context.pop()
return result
Есть несколько разных версий этого пользовательского тега, которые я хотел бы создать, но на самом деле они будут отличаться только в функции f
, которая вызывается выше. Таким образом, вместо того, чтобы просто копировать весь код тега несколько раз, я могу попробовать установить f в другое значение в функции представления прямо перед рендерингом шаблона, использующего этот тег. Но это не работает из-за процесса компиляции шаблона, который, по-видимому, смотрит только на содержимое самого исходного файла тега и не учитывает динамические изменения в нем (например, изменение f).
Итак, как мне это сделать - каким-то образом изменить f на ходу снаружи, а затем вызвать тег.