如何在Django中通过url定义模板?
问题描述:
我想创建一个项目,每个用户都可以拥有自己的“主页”。所以我希望能够为每个用户设置一个模板并在他的主页上显示它。我是否将模板名称保存在用户配置文件中并将其传递给模板加载器,或者是否有更好/更安全/更易插入的方法来执行此操作?如何在Django中通过url定义模板?
答
听起来像你想让用户拿起他/她最喜欢的模板,并设置喜好,如背景图像,显示风格等一堆?如果是这样,你的解决方案是好的。实际上,您允许用户在提供的(和可扩展的)模板集中进行选择,而不是让他们完全控制要使用的模板。
此外,对于仅用于每个用户的偏好设置。您可能希望将它们保存在序列化字段(如jsonfield或picklefield)中,而不是按列存储它们。我正在编写一个应用程序来简化这些字段的编辑。
答
将模板名称保存在用户配置文件中没有问题。就像你说的,你可以将它传递给模板渲染方法。
但注意一件事:用户不应该能够手动输入模板名称。我认为,它应该是安全原因的选择领域。请参阅https://docs.djangoproject.com/en/1.4/ref/models/fields/#choices的末尾,您可以使模板选择列表变为动态。
模板之间有什么区别?它是否可改变?由谁? – okm 2012-04-23 12:22:14
区别主要是光学。不同的css,也许不同的图像大小和不同的导航等等。我希望用户能够通过下拉菜单在模板之间进行选择。但是能够很容易地扩展模板的数量对我来说很重要。 – JasonTS 2012-04-23 12:24:48
您可以将标题更改为“如何根据用户使用不同的模板”吗?这有点更清楚。 – 2012-04-23 13:23:15