Django CMS – 在同一模板中为用户和来宾显示不同的内容
Django CMS – Show different content for users and guests in same template
我想使用 Django 1.9 和 Django CMS 3.3.1 在我的主页模板中为用户和访客提供不同的内容.
可以根据认证条件制作子页面并在祖先中显示相应的内容来完成,但这样会使页面结构过于复杂。
有没有一种简单的方法可以将这些 占位符 直接添加到 模板 中?
我已经试过了:
{% extends "base.html" %}
{% load cms_tags %}
{% block title %}{% page_attribute "page_title" %}{% endblock title %}
{% block content %}
{% if not user.is_authenticated %}
{% placeholder "guests" %}
{% endif %}
{% if user.is_authenticated %}
{% placeholder "authenticated" %}
{% endif %}
{% placeholder "content" %}
{% endblock content %}
但由于我在编辑内容时已通过身份验证,因此我无法访问 guests
占位符。
试试这个:
{% block content %}
{% if request.toolbar.build_mode or request.toolbar.edit_mode %}
{% placeholder "guests" %}
{% placeholder "authenticated" %}
{% else %}
{% if not user.is_authenticated %}
{% placeholder "guests" %}
{% endif %}
{% if user.is_authenticated %}
{% placeholder "authenticated" %}
{% endif %}
{% endif %}
{% placeholder "content" %}
{% endblock content %}
我有一些使用 Django CMS 的经验,但不知道这是否有效。这个想法是通过检查相应的请求变量来检查我们是否处于编辑模式。参见 。
@V-Kopio 更新:
上面给出的答案在实践中工作正常,但 Django 警告重复占位符。这可以通过组合 if
和 else
块来避免:
{% block content %}
{% if not user.is_authenticated or request.toolbar.build_mode or request.toolbar.edit_mode %}
{% placeholder "guests" %}
{% endif %}
{% if user.is_authenticated %}
{% placeholder "authenticated" %}
{% endif %}
{% placeholder "content" %}
{% endblock content %}
我想使用 Django 1.9 和 Django CMS 3.3.1 在我的主页模板中为用户和访客提供不同的内容.
可以根据认证条件制作子页面并在祖先中显示相应的内容来完成,但这样会使页面结构过于复杂。
有没有一种简单的方法可以将这些 占位符 直接添加到 模板 中?
我已经试过了:
{% extends "base.html" %}
{% load cms_tags %}
{% block title %}{% page_attribute "page_title" %}{% endblock title %}
{% block content %}
{% if not user.is_authenticated %}
{% placeholder "guests" %}
{% endif %}
{% if user.is_authenticated %}
{% placeholder "authenticated" %}
{% endif %}
{% placeholder "content" %}
{% endblock content %}
但由于我在编辑内容时已通过身份验证,因此我无法访问 guests
占位符。
试试这个:
{% block content %}
{% if request.toolbar.build_mode or request.toolbar.edit_mode %}
{% placeholder "guests" %}
{% placeholder "authenticated" %}
{% else %}
{% if not user.is_authenticated %}
{% placeholder "guests" %}
{% endif %}
{% if user.is_authenticated %}
{% placeholder "authenticated" %}
{% endif %}
{% endif %}
{% placeholder "content" %}
{% endblock content %}
我有一些使用 Django CMS 的经验,但不知道这是否有效。这个想法是通过检查相应的请求变量来检查我们是否处于编辑模式。参见
@V-Kopio 更新:
上面给出的答案在实践中工作正常,但 Django 警告重复占位符。这可以通过组合 if
和 else
块来避免:
{% block content %}
{% if not user.is_authenticated or request.toolbar.build_mode or request.toolbar.edit_mode %}
{% placeholder "guests" %}
{% endif %}
{% if user.is_authenticated %}
{% placeholder "authenticated" %}
{% endif %}
{% placeholder "content" %}
{% endblock content %}