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

如何在Django admin站点的已注册模型中添加自定义按钮

实现方案

1. 新增按钮UI代码

先定位到现有删除按钮的渲染逻辑,在同级位置插入通过、拒绝按钮,记得绑定对应用户的申请ID、邮箱等核心业务数据作为自定义属性,方便后续请求接口时传参:

<!-- 原有删除按钮 -->
<button class="btn btn-danger delete-btn">删除</button>
<!-- 新增自定义按钮 -->
<button class="btn btn-success approve-btn" data-app-id="xxx" data-user-email="xxx@xx.com">通过</button>
<button class="btn btn-warning reject-btn" data-app-id="xxx" data-user-email="xxx@xx.com">拒绝</button>

注:上述data-*属性的取值替换为你实际渲染的动态业务数据即可

2. 绑定按钮点击事件

给两个新增按钮绑定点击回调,触发时请求后端业务接口完成状态更新和邮件发送:

// 原生JS实现通过按钮逻辑
document.querySelector('.approve-btn').addEventListener('click', async function() {
  const reqParams = {
    app_id: this.dataset.appId,
    user_email: this.dataset.userEmail
  }
  const res = await fetch('/api/approve-app', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify(reqParams)
  })
  res.ok ? alert('审核通过,通知邮件已发送') : alert('操作失败,请重试')
})

// 拒绝按钮逻辑仅需修改接口地址和提示文案即可
document.querySelector('.reject-btn').addEventListener('click', async function() {
  const reqParams = {
    app_id: this.dataset.appId,
    user_email: this.dataset.userEmail
  }
  const res = await fetch('/api/reject-app', {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify(reqParams)
  })
  res.ok ? alert('申请已驳回,通知邮件已发送') : alert('操作失败,请重试')
})

3. 后端接口实现(PHP示例)

编写对应接口处理业务逻辑,调用邮件服务发送通知:

// 审核通过接口示例
public function approveApp() {
  $appId = $_POST['app_id'];
  $userEmail = $_POST['user_email'];
  // 1. 更新业务表申请状态为通过
  $updateStatus = $db->exec("UPDATE application SET status = 1 WHERE id = {$appId}");
  if(!$updateStatus) return json_encode(['code'=>0,'msg'=>'状态更新失败']);
  // 2. 发送通知邮件
  $mailStatus = mail(
    $userEmail,
    '申请审核结果通知',
    '您好,您提交的申请已审核通过',
    'From: system@yourdomain.com'
  );
  return json_encode(['code'=>$mailStatus?1:0,'msg'=>$mailStatus?'操作成功':'邮件发送失败']);
}

// 驳回接口仅需修改更新的状态值和邮件内容即可

如果你使用的是Laravel、SpringBoot、Node.js等框架,直接调用框架内置的邮件服务组件即可,不需要手动实现底层邮件发送逻辑。
如果需要支持富文本邮件模板、发送失败重试等需求,可以接入第三方邮件服务商的SDK完成开发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:18:02