使用 Django,如何在我的 javascript 中检测到管理员?

Posted

技术标签:

【中文标题】使用 Django,如何在我的 javascript 中检测到管理员?【英文标题】:Using Django, how can I detect an admin in my javascript? 【发布时间】:2018-01-28 15:46:48 【问题描述】:

我的 javascript 中有一些函数,我不希望普通用户可以使用这些函数,并且只对管理员/员工可用。理想情况下,我可以创建一个布尔变量,该变量是真/假,具体取决于请求用户是否为员工,但我将如何设置这个布尔变量?

注意:我并不是为了安全起见而禁用它们,而只是为了用户体验。

【问题讨论】:

【参考方案1】:

你可以尝试在js里面使用yesno过滤器,例如:

var is_staff =  request.user.is_staff|yesno:"true,false" 

【讨论】:

【参考方案2】:

可以通过浏览器查看和非常轻松地操作Javascript(在大多数浏览器上按F12,您可以轻松调试和更改标志)。

我建议您在显示您的页面之前检查用户服务器端,并仅在它们具有正确访问权限的情况下将相关的 Javascript 函数放在页面上。您可以通过两种不同的视图来做到这一点。然后,我还会确保对服务器进行的任何调用都经过服务器端检查以获得适当的访问权限。

【讨论】:

【参考方案3】:

将 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 %

【讨论】:

以上是关于使用 Django,如何在我的 javascript 中检测到管理员?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 django 在我的网站中添加类别?

如何使用 django(查询)在我的 html 中显示更多对象

如何在我的模板中使用 Django DeleteView

django+javascrip的疑问一

如何使用 CBV 在我的所有 Django 模板中创建侧边栏?

如何在后端使用 Nuxt 和 Django 在我的 axios 请求中发送 CSRFToken?