'fieldlist'/'FormField'无法使用flask_wtf正确呈现

mchl_k

我在烧瓶中的wtforms中使用了字段列表,但其默认值无法正确呈现。

在下面的示例中,字段列表的min_entries值为1,我通过append_entry()方法添加了两个附加条目。

另外两个条目不能正确呈现,因为它们的值不再是默认值,而是一些混合了html和默认值的难看文本。

现在,我决定在项目中完全不使用字段列表,而是通过min_entries生成固定数量的条目,这意味着我不能使用动态数量的条目。

flask如何呈现Fieldlist条目

第一次进入:value="[Enter track number]"
第二次进入:value="<input id="track" name="track" type="text" value="[Enter track number]">"

如何呈现FieldList条目

依赖关系和文件夹树

  • 容量瓶:1.0.2
  • 烧瓶引导器:3.3.7.1
  • flask-wtf:0.14.2

文件夹结构:
├──app.py
├──模板
| └──album_add.html

app.py

# Load and initialise flask variables
app = Flask(__name__)
SECRET_KEY = os.urandom(32); app.config['SECRET_KEY'] = SECRET_KEY
bootstrap = Bootstrap(app)

# form
class TrackShortList(FlaskForm):
    song_index = SelectField('Select Track')
    track_number = StringField('Track number', default='[Enter track number]')
    def __init__(self, csrf_enabled=False, *args, **kwargs):
        super(TrackShortList, self).__init__(csrf_enabled=csrf_enabled, *args, **kwargs) # required to disable csrf otherwise 'CSRF Token' is displayed
        # see https://stackoverflow.com/questions/15649027/wtforms-csrf-flask-fieldlist
class selectTracks(FlaskForm):
    tracks = FieldList(FormField(TrackShortList), min_entries=1)

# route
@app.route('/addtrack', methods=['post','get'])
def addtrack():
    track_select = [("Select track",)*2, ("A track",)*2, ("Another track",)*2]
    form = selectTracks()
    for i in range(2):
        trackChildForm = TrackShortList()
        form.tracks.append_entry(trackChildForm)
    for sub_form in form.tracks:
        sub_form.song_index.choices = track_select  
    if form.validate_on_submit():
        pass
    return render_template('album_add.html', form=form)

album_add.html

{% import "bootstrap/wtf.html" as bswtf %}    
<div class='form'>
    <form method="POST">
        {{ form.hidden_tag() }}
        {% for track_select in form.tracks %}
        <tr>
            {% for field in track_select  %}
                <td>{{ bswtf.form_field(field) }}</td>
            {% endfor %}
         </tr>
         <hr>
        {% endfor %}
</div>
mchl_k

以下路线有效。

所不同的是trackChildForm.track_number = '[Enter track number]',我认为这条线将覆盖默认的TrackShortList.track_number值。

通过查看此处说明的类似问题,我找到了此解决方案但是我不知道它为什么起作用,因此欢迎进行任何澄清。

@app.route('/addtrack_working', methods=['post','get'])
def addtrack_working():
    track_select = [("Select track",)*2, ("A track",)*2, ("Another track",)*2]
    form = selectTracks()
    for i in range(2):
        trackChildForm = TrackShortList()
        trackChildForm.track_number = '[Enter track number]'
        form.tracks.append_entry(trackChildForm)
    for sub_form in form.tracks:
        sub_form.song_index.choices = track_select
    if form.validate_on_submit():
        pass
    return render_template('album_add.html', form=form)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从用户界面动态添加新的WTForms FieldList条目

如何使用FormFields的WTForms FieldList?

如何在Flutter中从Formfield中获取数组输入?

用数据填充WTForms FormField FieldList会在字段中产生HTML

在FieldList中动态调整的表单

使用formfield_overrides更改Django中admin.TabularInline Form中的textarea大小

通过vba保存pdf之前更新formfield

带BooleanField的烧瓶WTForms FieldList

嵌套的WTForms FieldList在字段中产生HTML

使用自定义属性对FieldList进行排序

使用FieldList在WTForm的selectfield中动态分配选择

使用Bootstrap渲染SelectFields的WTF FieldList

无法使用wtforms,append_entry()和FieldList(FormField())更改动态添加的表单字段的标签

如何在ModelAdmin.formfield_for_manytomany()中使用Django QuerySet.union()?

Kendo UI FormField并排

FormField.Add方法不会返回对新字段的引用(错误?)

检查formfield是多行还是不使用itextsharp

如何使用jQuery动态将WTForms TextField添加到FieldList?

如何使用iText将FormField添加到没有位置的部分中?

将焦点设置为formField1

使用formfield_for_manytomany时filter_horizontal不起作用

WTForm FormField填充值

Django 1.9不能将formfield留空

无法从validate_on_submit上的WTForms FormField取回数据

使用 flask_wtf 验证器控制输入文件不起作用

Django:如何使用`formfield_callback`在`modelform_factory`中指定`include_blank=False`?

WTForms FormField 导致 csrf_token 错误

如何使用对象创建自定义 FormField 初始化?

Flask WTForms 如何返回 Posted FieldList 表单行数据