1.在admin.html是通过url参数来向后端传送是否取消管理员的:
% for user in users: <tr> <td>${user.username}</td> # 这里的user对象是迭代出循环的每一个user对象 <td>${user.is_superuser}</td> <td>${user.date_joined}</td> <td> % if user.is_superuser: <td><a href="${reverse('admin_update_status')}?status=off">取消管理员</a></td> %else: <td><a href="${reverse('admin_update_status')}?status=on">设为管理员</a></td> % endif </td> </tr> % endfor
2.在后端处理的视图函数,
class UpdateAdminStatus(View): def get(self, request): status = request.GET.get('status', 'on') _status = True if status == 'on' else False request.user.is_superuser = _status # 这里request.user是当前登录的用户的对象 request.user.save() # 数据库中实际修改的是当前登录用户的user对象的管理员状态 return redirect(reverse('admin_manager'))
问题现象:
修改用户的管理员状态,实际修改的时当前用户的管理员状态: