我正在尝试创建一个具有用于所有页面的多个模板的网站。
我已经创建了一个模板文件夹,其中有3个文件夹。每个文件夹都包含 base.html , home.html ,等。
管理员可以从管理面板中选择每个模板,并在我的视图中加载模板,如下所示。
[{"Twitter":"rey"},{"Facebook":"ray lard"}]
问题是我必须重新启动服务器才能应用管理员的更改。 有什么方法可以执行此操作而无需重新启动服务器? 我也尝试过启用/禁用加载程序缓存,但我想问题不在于缓存系统。
答案 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)]