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

Flask+Jinja2环境下{{ }}无法渲染Python变量output问题排查

问题修复方案

你的代码存在两处核心错误导致无法正常渲染结果,直接按以下方案修改即可:

1. 前端表单提交按钮错误

当前HTML中的按钮类型为button,默认没有表单提交行为,点击后不会触发后端POST逻辑,自然不会返回生成结果。同时按钮标签未闭合。
修改代码如下:

<!-- 把原来的button标签替换成下面的内容 -->
<button type="submit" value="Submit">生成卡号</button>

2. 后端return语句缩进错误

你当前的return render_template('index.html', output=output)写在while循环内部,第一次循环执行完就会直接返回,根本不会跑完指定数量的卡号生成逻辑。需要把这行的缩进调整到while循环外面,同时把Luhn算法函数移到循环外部避免重复定义,优化后完整Python代码如下:

import random
from flask import Flask, render_template, request, url_for
app = Flask(__name__)

# Luhn算法单独抽出来,不要放在循环或者请求逻辑里重复定义
def luhn_checksum(card_number):
    def digits_of(n):
        return [int(d) for d in str(n)]
    digits = digits_of(card_number)
    odd_digits = digits[-1::-2]
    even_digits = digits[-2::-2]
    checksum = 0
    checksum += sum(odd_digits)
    for d in even_digits:
        checksum += sum(digits_of(d * 2))
    return checksum % 10

@app.route('/', methods=['GET', 'POST'])
def function1():
    output = '' # 提前初始化空值,避免Jinja2渲染警告
    if request.method == 'POST':
        Bin = request.form.get('Bin')
        quantity = int(request.form.get('quantity'))
        x = 0
        good = 16 - len(Bin)
        exp_month_list = ['01','02','03','04','05','06','07','08','09','10','11','12']

        while x != quantity:
            r = str(random.randint(pow(10, good - 1), pow(10, good)- 1))
            iccnum = Bin + r
            if luhn_checksum(int(iccnum)) == 0:
                ccnum = str(iccnum)
                exp_month = random.choice(exp_month_list)
                exp_year = str(random.randint(2022, 2026))
                cvv = str(random.randint(100, 999))
                CC = f"{ccnum}|{exp_month}|{exp_year}|{cvv}\n"
                output += CC
                x += 1
        # 调整缩进:循环跑完所有数量生成后再返回
        return render_template('index.html', output=output)
    return render_template('index.html', output=output)

if __name__ == '__main__':
    app.run()

可选优化:解决换行不显示问题

默认<p>标签无法识别\n换行符,所有生成结果会挤在同一行,把输出区域的标签替换为<pre>即可保留换行格式:

<pre>Output: {{output}}</pre>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:03:00