在wtforms.fields.html5.DecimalRangeField旁边显示滑块值

zan*_*nzu 3 python html5 jinja2 flask flask-wtforms

我正在尝试在我的wtforms.fields.html5.DecimalRangeField旁边显示滑块值.我当前的代码(下面的相关摘录)只渲染滑块,没有任何值.到目前为止我看到的所有示例都是纯HTML5代码,而且我缺乏使用jinja2模板作为起点的方法.

有什么建议?

从main.py中提取:

class MyForm(Form):
    MyField = DecimalRangeField('Age', [validators.NumberRange(min=1, max=100)])
Run Code Online (Sandbox Code Playgroud)

从form.html中提取

<div>{{ wtf.form_field(form.MyField) }}</div>
Run Code Online (Sandbox Code Playgroud)

ped*_*ech 8

试试这个代码(要点):

from flask import Flask, render_template_string
from wtforms import Form
from wtforms.fields.html5 import DecimalRangeField


app = Flask(__name__)
app.config['DEBUG'] = True

TPL = '''
<!DOCTYPE html>
<html>
<head>
<script>
function outputUpdate(age) {
    document.querySelector('#selected-age').value = age;
}
</script>
</head>
<body>
<form>
    <p>
       {{ form.age.label }}:
       {{ form.age(min=0, max=100, oninput="outputUpdate(value)") }}
       <output for="age" id="selected-age">{{ form.age.data }}</output>
    </p>
</form>
</body>
</html>
'''

class TestForm(Form):
    age = DecimalRangeField('Age', default=0)


@app.route("/")
def home():
    form = TestForm(csrf_enabled=False)
    return render_template_string(TPL, form=form)


if __name__ == "__main__":
    app.run()
Run Code Online (Sandbox Code Playgroud)