我有一个通用的 Django 视图,用于渲染模板。该模板在一个应用程序中,其他项目将使用该应用程序。导入项目通常会对应用程序提供的视图进行子类化。该视图具有默认模板,其中使用通用措辞完成工作。
99% 的情况下,子类化视图只想更改文本,因此,我正在寻找一种允许类的用户以最有效的方式替换模板中的措辞的方法,而不是让他们为了更改非标记措辞而复制模板。
目前已探索的选项:
- 包含仅包含文本部分的模板片段,使用应用程序可以覆盖它们(魔术,需要大量用户工作)。 - 视图上的 template_strings 方法,该方法提供字符串字典,这些字符串最终出现在模板上下文中,子类可以覆盖它们。 - 利用(滥用?)翻译系统,使应用程序提供默认的英语翻译,并且使用代码可以提供自己的翻译(尚未实现,仅是一个想法)。 - 通过 AppConfig 实现上述“template_strings”,但这似乎很糟糕,可能会变得非常难以处理,因为有很多英文字符串。如果这样做,我会创建一个类似于上下文的设置,以便您不必重新声明所有字符串。
似乎应该通过子类化完成一项完整的工作并仅为文本提供替代字符串的解决方案。是否有比上述方法更好的方法?传统的做法?我是否遗漏了什么?
(django 1.11 Python 3.6.2)
99% 的情况下,子类化视图只想更改文本,因此,我正在寻找一种允许类的用户以最有效的方式替换模板中的措辞的方法,而不是让他们为了更改非标记措辞而复制模板。
目前已探索的选项:
- 包含仅包含文本部分的模板片段,使用应用程序可以覆盖它们(魔术,需要大量用户工作)。 - 视图上的 template_strings 方法,该方法提供字符串字典,这些字符串最终出现在模板上下文中,子类可以覆盖它们。 - 利用(滥用?)翻译系统,使应用程序提供默认的英语翻译,并且使用代码可以提供自己的翻译(尚未实现,仅是一个想法)。 - 通过 AppConfig 实现上述“template_strings”,但这似乎很糟糕,可能会变得非常难以处理,因为有很多英文字符串。如果这样做,我会创建一个类似于上下文的设置,以便您不必重新声明所有字符串。
似乎应该通过子类化完成一项完整的工作并仅为文本提供替代字符串的解决方案。是否有比上述方法更好的方法?传统的做法?我是否遗漏了什么?
(django 1.11 Python 3.6.2)