1

我正在使用 Django 创建一个站点,该站点为各种生产者消费者提供单独的 Web UI 。两个 UI(或“子站点”)都有不同的布局、菜单和图形。然而,他们访问相同的数据库和模型,只是从不同的方面(生产者与消费者......)。它都托管在一个域下,UI 区分是通过 URL 完成的。

当我想将 CMS 集成到该系统以处理菜单结构和文本内容时,问题就来了。我应该如何处理不同 UI 的两个不同菜单?我查看了 django-cms 和 django-page-cms,它们似乎只维护一个菜单层次结构。

有任何想法吗?

一个肮脏的解决方案是为 CMS 中的每个 UI 的菜单项添加不同的前缀,并破解 CMS 代码,以便它只插入正确 UI 的菜单项(作为 show_menu 模板标签的参数给出)。

一个更好的方法是如果可以有多个 CMS 应用程序实例,那么每个实例都有自己的数据库表。但这对于 django 和例如 django-cms 或 django-page-cms 是否可行?

一些进一步的限制:

  • CMS 必须支持本地化
  • 我更喜欢运行单个 Django 实例,以保持配置和测试简单
4

2 回答 2

0

我没有使用过 django-cms,所以这只是我的想法。

文档Extending the menu中有一部分看起来很有希望。不幸的是,他们的配置中有这么多,settings.py因为看起来您可以操纵他们的 CMS_TEMPLATES 为不同的用户使用不同的基本模板(等)。解决此问题的一种方法(假设没有更直接的路线)是向 UserProfile 添加一些内容,将用户标识为消费者/生产者。然后在你的base.html你做:

{% if user.get_profile.consumer %}
 ...
{% else %}
 ...
{% endif %}

这有效地为您提供了两种基于用户类型的完全不同的外观/感觉选项。我还要注意,它{% extends %}可以采用字符串常量字符串变量,因此您可以使用 context_processor 来设置要扩展的模板的名称。

于 2010-01-08T17:26:57.487 回答
0

你需要的是django-cms 的show_menu_below_id标签。使用各自的 id(高级字段集,在页面表单的底部)创建页面消费者和生产者,然后开始为每个页面构建页面层次结构。

然后在模板中使用标签:

<ul>
  {% if user.get_profile.consumer %}
    {% show_menu_below_id "consumer" %}
  {% else %}
    {% show_menu_below_id "provider" %}
  {% endif %}
</ul>
于 2013-04-25T17:44:40.763 回答