如何在Flask中获取HTML属性?

0 投票
2 回答
49 浏览
提问于 2025-04-12 23:34

我正在给我的网站添加一个功能,这个功能需要用到图标,所以我把一些来自 Font Awesome 的图标放在了一个按钮里。

<button id="iconDiv1" class="iconBtn" type="button" value="fa-solid fa-heart fa-xl" >
<i class="fa-solid fa-heart fa-2xl" class="icons"></i>
</button>
        <button id="iconDiv2" class="iconBtn" type="button" value="fa-solid fa-gamepad fa-xl">
<i class="fa-solid fa-gamepad fa-2xl" class="icons">
</i></button>
        <button id="iconDiv3" class="iconBtn" type="button" value="fa-solid fa-chess-knight fa-xl">
<i class="fa-solid fa-chess-knight fa-2xl" class="icons"></i>
</button>
        <button id="iconDiv4" class="iconBtn" type="button" value="fa-solid fa-hand-fist fa-xl">
<i class="fa-solid fa-hand-fist fa-2xl" class="icons"></i>
</button>
        <button id="iconDiv5" class="iconBtn" type="button" value="fa-solid fa-mug-hot fa-xl">
<i class="fa-solid fa-mug-hot fa-2xl" class="icons"></i>
</button>

然后,我用 JavaScript 给这个选中的按钮/图标添加了一个名字属性,现在我需要把按钮的值 value="fa-solid fa-heart fa-xl(也就是里面的图标类)存到数据库里,使用的是 Flask 框架,但我不知道怎么在 Flask 中获取这个按钮的值属性,而不使用 JavaScript。

我搜索了很多答案,但没有找到合适的。我还尝试写了 icon = request.form.get("selected").getattr("value"),但没有成功。然后我又试着在 Flask 中写 icon = request.form["selected"].__getattribure__("value"),结果也不行。

2 个回答

0

如果你的按钮不在一个表单里,你也可以把它们放在链接<a>标签里,然后把值传给你的服务器路由。

index.html

  <a href="{{ url_for('button', value='first') }}">
    <button>First Button</button>
  </a>
  <a href="{{ url_for('button', value='second') }}">
    <button>Second Button</button>
  </a>
  <a href="{{ url_for('button', value='third') }}">
    <button>Third Button</button>
  </a>
app.py

@app.route("/")
def index():
    return render_template("index.html")


@app.route("/button/<value>")
def button(value):
    return f"The button you clicked has the following {value=}!"

0

在一个表单里,输入框和按钮的值可以通过它们的名字来获取。其他的属性是服务器无法访问的。

所以你可以给按钮设置一个叫做 name 的属性。

<form method="POST">
    <button name="icon" type="submit" value="heart" >
        <i class="fa-solid fa-heart fa-2xl" class="icons"></i>
    </button>
    <button name="icon" type="submit" value="gamepad">
        <i class="fa-solid fa-gamepad fa-2xl" class="icons"></i>
    </button>
    <button name="icon" type="submit" value="chess-knight">
        <i class="fa-solid fa-chess-knight fa-2xl" class="icons"></i>
    </button>
    <button name="icon" type="submit" value="hand">
        <i class="fa-solid fa-hand-fist fa-2xl" class="icons"></i>
    </button>
    <button name="icon" type="submit" value="mug-hot">
        <i class="fa-solid fa-mug-hot fa-2xl" class="icons"></i>
    </button>
</form>

当表单被提交时,必须根据名字来请求这个属性的值,属性名是 value

@app.route('/example', methods=['GET', 'POST'])
def example():
    if request.method == 'POST':
        value = request.form.get('icon')
        print(value)
    return render_template('example.html')

撰写回答