You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中显示用户权限及用户信息表格

Django用户权限管理:展示用户及权限信息表格

看起来你想要搭建一个展示所有Django用户及其权限、基本信息的表格,结合你给出的HTML结构,我来给你完善后端数据准备和前端模板渲染的方案:

首先,重要提醒:Django中用户密码是加密哈希存储的,出于安全绝对不能在前端页面展示密码,所以表格里不要包含密码列哦。


1. 后端视图:准备用户及权限数据

我们需要从Django的User模型中获取用户信息,同时关联他们的直接权限和所属组的权限,避免多次数据库查询:

# views.py
from django.contrib.auth.models import User
from django.shortcuts import render

def user_permissions_table(request):
    # 预加载用户的权限和组,优化数据库查询性能
    users = User.objects.prefetch_related('user_permissions', 'groups').all()
    
    # 整理用户数据,合并直接权限和组权限
    user_list = []
    for idx, user in enumerate(users, 1):
        # 合并用户的直接权限和所属组的权限,去重
        all_permissions = set(user.user_permissions.all())
        for group in user.groups.all():
            all_permissions.update(group.permissions.all())
        
        # 格式化权限名称,方便展示
        permission_labels = [perm.name for perm in all_permissions]
        user_list.append({
            'index': idx,
            'is_active': user.is_active,
            'username': user.username,
            'first_name': user.first_name,
            'last_name': user.last_name,
            'email': user.email,
            'last_login': user.last_login.strftime('%Y-%m-%d %H:%M') if user.last_login else '从未登录',
            'permissions': ', '.join(permission_labels) if permission_labels else '无权限'
        })
    
    return render(request, 'user_permissions_table.html', {'users': user_list})

2. 前端模板:渲染用户表格

基于你给出的HTML结构,结合Django模板语法渲染数据,同时补充权限列和状态显示:

<!-- templates/user_permissions_table.html -->
<table id='usersTable' style="width:100%; border-collapse: collapse;">
  <thead>
    <tr style="border-bottom: 2px solid #ddd;">
      <th style="padding: 8px;">#</th>
      <th style="padding: 8px;">状态</th>
      <th style="padding: 8px;">用户名</th>
      <th style="padding: 8px;">名字</th>
      <th style="padding: 8px;">姓氏</th>
      <th style="padding: 8px;">邮箱</th>
      <th style="padding: 8px;">最后登录</th>
      <th style="padding: 8px;">权限</th>
    </tr>
  </thead>
  <tbody>
    {% for user in users %}
    <tr style="border-bottom: 1px solid #eee;">
      <td style="padding: 8px;">{{ user.index }}</td>
      <td style="padding: 8px;">{{ '激活' if user.is_active else '禁用' }}</td>
      <td style="padding: 8px;">{{ user.username }}</td>
      <td style="padding: 8px;">{{ user.first_name|default:'-' }}</td>
      <td style="padding: 8px;">{{ user.last_name|default:'-' }}</td>
      <td style="padding: 8px;">{{ user.email|default:'-' }}</td>
      <td style="padding: 8px;">{{ user.last_login }}</td>
      <td style="padding: 8px;">{{ user.permissions }}</td>
    </tr>
    {% empty %}
    <tr>
      <td colspan="8" style="padding: 16px; text-align: center;">暂无用户数据</td>
    </tr>
    {% endfor %}
  </tbody>
</table>

3. 可选:添加权限编辑入口

如果需要快速跳转到Django后台编辑用户权限,可以在表格里加一个操作列:

<!-- 在表头添加操作列 -->
<th style="padding: 8px;">操作</th>

<!-- 在表格行里添加编辑按钮 -->
<td style="padding: 8px;">
  <a href="{% url 'admin:auth_user_change user.id' %}" target="_blank" style="text-decoration: none; padding: 4px 8px; background: #007bff; color: white; border-radius: 4px;">编辑权限</a>
</td>

这样就能得到一个功能完整的用户权限展示表格啦,既符合Django的安全规范,又能清晰展示用户的所有权限信息。

内容的提问来源于stack exchange,提问作者swilson0897

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:43:53