【发布时间】:2016-07-22 13:01:56
【问题描述】:
我正在使用 Django 开发一个 webapp,我创建了不同的用户角色,例如CunstomerUser, GoodUser, Admin...等。
现在我想在他们登录时向他们展示不同的东西。例如,当他们打开一个弹出窗口时,CustomerUser 将看到一个用于评论的 textarea 字段,而对于 Admin,他将看到他可以做的其他事情。
我发现我们可以在template级别做到这一点,比如:
{% if request.user.is_superuser %}
.... superuser content
{% else %}
.... non-superuser content
{% endif %}
但是我该如何在这个template 使用的javascript 文件中做呢?因为我想向他们展示不同的功能取决于他们的角色。例如我想确定模板中包含的example.js中的角色:
<html>
<script type="text/javascript" src="example.js"></script>
...
</html>
我目前找到的解决方案是在模板中创建一个变量全局javascript,这样所有的javascipt文件都可以使用:
<script>
var userType = '{{user.get_usertype}}';
</scirpt>
但是他们是更好的方法吗?我认为变量 global 不太好用……也许我使用了转储模式设计。有任何想法吗?谢谢!
【问题讨论】:
-
我认为最合适的方法是在视图中检查用户角色,从而为其呈现不同的模板。如果你的模板有很多共同的内容,你可以使用Django的
{% include %}和{% block %}标签来遵循DRY原则。
标签: javascript python django