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

如何在Docassemble的每个问题页面同时显示退出按钮与继续按钮?

在Docassemble每个问题页面同时显示退出与继续按钮的实现技巧

可以实现这个需求,以下是几种实用的方法:

方法一:配置问题的buttons参数(推荐)

Docassemble的问题支持通过buttons参数自定义多个按钮,每个按钮可绑定不同动作,无需修改模板或额外脚本。

示例代码:

question: 请输入你的姓名
fields:
  - 姓名: user_name
buttons:
  - label: 继续
    action: continue  # 绑定默认的继续动作
  - label: 退出
    action: logout    # 绑定内置的退出动作,直接跳转到登录页

如果内置的logout动作不符合需求,还可以自定义动作函数:

def custom_logout():
  from flask import redirect, url_for
  # 这里可以添加自定义的退出逻辑,比如清理会话数据
  return redirect(url_for('logout'))

然后在问题中引用自定义动作:

question: 请输入你的联系方式
fields:
  - 手机号: user_phone
buttons:
  - label: 继续
    action: continue
  - label: 退出
    action: custom_logout

方法二:自定义页面模板

如果需要全局统一修改所有问题页面的按钮布局,可以覆盖Docassemble的默认问题模板:

  1. 在项目的templates目录下创建question.html文件
  2. 复制默认模板的内容,找到按钮渲染的部分,添加退出按钮的代码:
<!-- 原有继续按钮的代码 -->
<button type="submit" class="btn btn-primary">{{ _('Continue') }}</button>
<!-- 添加退出按钮 -->
<a href="{{ url_for('logout') }}" class="btn btn-danger ml-2">{{ _('退出') }}</a>

这样所有使用该模板的问题页面都会自动显示退出按钮。

方法三:用JavaScript动态添加按钮

如果不想修改模板或问题配置,可通过JavaScript在页面加载时动态插入退出按钮:

在问题的javascript块中添加代码:

$(function() {
  // 创建退出按钮元素
  const exitBtn = $('<button>', {
    class: 'btn btn-danger ml-2',
    text: '退出'
  }).click(function() {
    // 点击后跳转到退出页面
    window.location.href = '/logout';
  });
  // 将按钮插入到继续按钮的同一容器中
  $('.btn-primary').parent().append(exitBtn);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:50:24