我有一个django项目,其中注册了几个应用程序。它们中的每一个都呈现自己的模板,所有这些都扩展了相同的基本模板。现在我想将数据传递给这个基本模板,而不是让所有应用程序都这样做。 (这将是相当大的开销)我想使用自定义模板标签这样做,但我在这里完全失去了关于可能性和操作方法。任何提示或建议?
答案 0 :(得分:1)
创建一个Mixin并覆盖get_context_data()
,将所有常见内容添加到其中,将此mixin添加到需要此行为的所有视图中
class CommonMixin(object):
def get_context_data(self, **kwargs):
context = super(CommonMixin, self).get_context_data(**kwargs)
context['common_value'] = 'VALUE1'
return context
class App1View(CommonMixin, ListView):
...
class App2View(CommonMixin, CreateView):
...
如果您使用功能视图,请编写一个充当get_context_data
的函数并在每个视图中使用它。
您可以创建自定义标记,但这可能会带来更多的计算成本。
另一种方法可以是编写自定义context processor,但这会影响您的所有观看次数。