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

如何将变量传递到Flask HTML表单中

如何将变量传递到Flask HTML表单中

看起来你已经能通过手动输入完成用户添加操作了,现在想自动把Dinopass生成的密码填充到表单的密码输入框里对吧?我来给你一步步调整代码实现这个需求~

第一步:修改密码生成函数,让它返回密码

你的dinopass1函数现在只是获取了密码但没有返回它,我们先调整它,让它能把生成的密码传递出去:

def dinopass1():
    response = requests.get("https://www.dinopass.com/password/simple")
    return response.text.strip()  # 用strip()去掉可能带的换行或空白符

第二步:修改add_user路由,传递密码到模板

原来的add_user只处理了POST提交的逻辑,当用户第一次访问页面(GET请求)时,我们需要调用密码生成函数,把生成好的密码传给HTML模板:

@app.route("/add_user", methods=["GET", "POST"])
def add_user():
    if request.method == "GET":
        # 生成密码并传给模板
        generated_pass = dinopass1()
        return render_template("add.html", generated_pass=generated_pass)
    
    if request.method == "POST":
        headers = {"Authorization": f"{xxxx}"}

        new_user = {
            "username": request.form["name"],
            "passphrase": request.form["passphrase"]
        }
        requests.post(
            "API_URL", json=new_user, headers=headers
        )
        # 修正原代码的语法错误:去掉url_for里多余的括号
        return redirect(url_for("add_user"))

第三步:修改HTML模板,自动填充密码

在add.html的密码输入框里,用Jinja2语法把Flask传过来的密码填充到value属性中,这样页面加载后输入框就会自动显示生成的密码:

<form action="{{url_for('add_user')}}" method="POST">
    
    <div class="form-group">
    <label>Name:</label>
    <input type="text" class="form-control" name="name" required="1">
    </div>


    <div class="form-group">
    <label>Passphrase:</label>
    <!-- 用generated_pass填充输入框的默认值 -->
    <input type="text" class="form-control" name="passphrase" value="{{ generated_pass }}" required="1">
    </div>
                  

<div class="form-group">
<button class="btn btn-primary mt-4" type="submit">Add</button>
</div>        
</form>

补充说明

  • 当用户访问/add_user页面时(GET请求),Flask会先调用dinopass1生成密码,再把这个密码变量传给模板,模板会自动把密码填充到输入框里
  • 提交表单时,这个自动生成的密码会和用户名一起被提交到后端逻辑,和你原来手动输入的流程完全一致
  • 如果不想让用户修改这个自动生成的密码,可以给输入框加上readonly属性:readonly="readonly"

备注:内容来源于stack exchange,提问作者bickyz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:28:04