如何在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
相关产品推荐
相关产品推荐

