在我的项目中,我想在侧边菜单和内容页面之间拆分页面。 我想显示一个与用户类型不同的侧面菜单(有5种用户类型,因此会有5个侧面菜单)。但有时,要显示的内容页面对于这5种用户类型可能是相同的。
我一直在寻找"模式"为了解决这个问题,我想到了一个,但从未在另一个项目中看到它。我希望你告诉我这是好事还是坏事:
模板示例:
{% if user_type == "anonymous" %}
<!-- display anonymous sidemenu here -->
{% elif user_type == "landlord" %}
<!-- display landlord sidemenu here -->
{% endif %}
<-- Here is the same content for all user types -->
你有什么建议吗?提出另一种模式?
答案 0 :(得分:1)
检查this answer以获取有关user.is_authenticated
的讨论。您还可以在视图中检查以查看用户是谁(see here)并相应地修改发送到模板的上下文。另一种选择是修改您的视图,以便只显示不同类型的用户不同的模板。
很多方法可以实现这一点,不确定是否有“正确”的。
您的评论让我意识到这正是auth
包的Groups功能的用途。您可以将用户分配到组,查询他们是否是该组的成员,然后根据该组显示内容。我很抱歉我没有时间写出示例代码,但有tons of stuff here on SO about it;希望这对你来说是一个很好的起点。
答案 1 :(得分:1)
我不知道它是不是好风格。但你可以使用
{% include user_type_sidemenu_template with arg1=... %}
在您的模板中,为每个user_type
的侧面菜单提供不同的模板。然后,您可以将模板变量user_type_sidemenu_template
设置为视图中的相应模板名称。