我正在编写一个基于 Django 的简单 CMS。大多数内容管理系统依赖于固定页面、固定 URL、使用具有一个或多个可编辑区域的模板。要拥有可编辑区域,您需要一个页面。为了让系统确定哪个页面,您需要 URL。
当您不再处理“页面”(FlatPages 页面或其他页面),而是处理来自另一个模型的实例时,问题就出现了。例如,如果我有一个产品模型,我可能希望创建一个包含多个可编辑区域的详细信息页面。
I could将这些区域构建到模型中,但就我而言,有多个模型,并且我想要显示的数据量存在很大差异。
因此,我想在模板级别构建 CMS,并根据“页面”实例或其使用的模型指定块(可编辑区域)的内容。
我有一个想法,也许我可以在页面上转储自定义模板标签,如下所示:
{% block unique_object "unique placeholder name" %}
这将根据传入的两个参数找到一个“块”。示例:
<h1>{{ product_instance.name }}</h1>
{% block product_instance "detail: product short description" %}
{% block product_instance "detail: product video" %}
{% block product_instance "detail: product long description" %}
听起来很漂亮,对吧?那么我遇到的问题是如何为区域创建“密钥”,以便我可以拉出正确的块?我将处理一个完全未知的对象(它可能是一个“页面”对象、一个 URL、一个模型实例、任何东西 - 它甚至可能是一艘船</fg>
).
其他 Django 微应用程序必须执行此操作。你可以用 django-tagging 来标记任何东西,对吧?我试图理解它是如何工作的,但我在画空白。
所以,首先,我生气了吗?假设我没有,而且这看起来是一个相对理智的想法,我应该如何将对象+字符串链接到块/可编辑区域?
注意:将进行编辑在页面上因此让用户编辑区域没有真正的问题。我不必在管理员中做任何反向繁琐的操作。我最终的梦想是允许第三个参数来指定这是什么类型的内容区域(文本、图像、视频等)。如果您对此有任何意见,我很乐意阅读!