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

Django使用DetailView实现点击HTML按钮激活用户的问题求助

问题原因分析

  • 最初TypeError: 'bool' object is not callable报错的原因:Django内置User模型的is_active是布尔类型属性,不是可执行方法,你加括号user.is_active()相当于尝试把布尔值作为函数调用,自然触发类型错误。
  • 修改后用户状态不生效的原因:你调整后的代码仅读取了user.is_active的属性值,既没有给属性赋值为True,也没有调用save()方法将修改同步到数据库,修改自然不会生效。

你的模板、路由、模型部分的逻辑没有问题,仅需要修改视图的激活逻辑即可。

修复方案

替换你的accept视图代码为以下内容即可:

from .models import Model
from django.contrib.auth.models import User
from django.shortcuts import get_object_or_404, redirect


class UserInspectView(DetailView):
    model = Model
    template_name = 'user-inspect.html'


def accept(request, pk):
    # 用get_object_or_404替代原生get,避免用户不存在时直接触发500错误
    user = get_object_or_404(User, id=pk)
    # 直接给布尔属性赋值,不需要加括号
    user.is_active = True
    # 保存修改到数据库
    user.save()
    return redirect('home')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:36:03