django从管理面板中选择模板,而无需重新启动服务器

时间:2019-07-09 07:17:24

标签: django django-templates

我正在尝试创建一个具有用于所有页面的多个模板的网站。

我已经创建了一个模板文件夹,其中有3个文件夹。每个文件夹都包含 base.html home.html

管理员可以从管理面板中选择每个模板,并在我的视图中加载模板,如下所示。

[{"Twitter":"rey"},{"Facebook":"ray lard"}]

问题是我必须重新启动服务器才能应用管理员的更改。 有什么方法可以执行此操作而无需重新启动服务器? 我也尝试过启用/禁用加载程序缓存,但我想问题不在于缓存系统。

1 个答案:

答案 0 :(得分:1)

直接在类级别定义的所有内容将在整个过程中保持不变。

幸运的是,Django的基于类的视图提供了一系列挂钩,因此您可以根据每个请求定义事物。在这种情况下,您想要的方法是get_template_names(它返回要搜索的模板列表)。

所以:

class HomeView(TemplateView):
    def get_template_names(self):
        default_template = CustomTemplate.objects.first().name
        return ['{}/home.html'.format(default_template)]