【发布时间】:2018-01-28 15:46:48
【问题描述】:
我的 JavaScript 中有一些函数,我不希望普通用户可以使用这些函数,并且只对管理员/员工可用。理想情况下,我可以创建一个布尔变量,该变量是真/假,具体取决于请求用户是否为员工,但我将如何设置这个布尔变量?
注意:我并不是为了安全起见而禁用它们,而只是为了用户体验。
【问题讨论】:
标签: javascript django django-templates
我的 JavaScript 中有一些函数,我不希望普通用户可以使用这些函数,并且只对管理员/员工可用。理想情况下,我可以创建一个布尔变量,该变量是真/假,具体取决于请求用户是否为员工,但我将如何设置这个布尔变量?
注意:我并不是为了安全起见而禁用它们,而只是为了用户体验。
【问题讨论】:
标签: javascript django django-templates
你可以尝试在js里面使用yesno过滤器,例如:
var is_staff = {{ request.user.is_staff|yesno:"true,false" }}
【讨论】:
可以通过浏览器查看和非常轻松地操作Javascript(在大多数浏览器上按F12,您可以轻松调试和更改标志)。
我建议您在显示您的页面之前检查用户服务器端,并仅在它们具有正确访问权限的情况下将相关的 Javascript 函数放在页面上。您可以通过两种不同的视图来做到这一点。然后,我还会确保对服务器进行的任何调用都经过服务器端检查以获得适当的访问权限。
【讨论】:
将 Django 变量传递给 JavaScript 的最简单方法是在 JS 文件中声明一个全局函数并在模板文件中调用它。
例如:
index.html
{% block javascript %}
<script>
var isStaff = {{user.is_staff}};
// Global function which calls your required function if user is a staff
isUserStaff(isUserStaff);
</script>
{% endblock javascript %}
【讨论】: