'Fieldlist' / 'FormField'がflask_wtfで正しくレンダリングされない

mchl_k

フラスコ付きのwtformsでフィールドリストを使用していますが、デフォルト値が正しくレンダリングされません。

以下の例では、Fieldlistのmin_entries値が1であり、append_entry()メソッドを介して2つのエントリを追加します。

追加の2つのエントリは、値がデフォルト値ではなく、htmlとデフォルト値が混在する醜いテキストであるため、正しくレンダリングされません。

今のところ、プロジェクトでフィールドリストをまったく使用しないことにしました。代わりに、min_entriesを介して固定数のエントリを生成します。つまり、動的な数のエントリを使用することはできません。

フラスコがフィールドリストエントリをレンダリングする方法

最初のエントリ:value="[Enter track number]"
2番目のエントリ:value="<input id="track" name="track" type="text" value="[Enter track number]">"

FieldListエントリのレンダリング方法

依存関係とフォルダツリー

  • フラスコ:1.0.2
  • フラスコ-ブートストラップ:3.3.7.1
  • フラスコ-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

関連記事

分類Dev

FormFieldのWTForms FieldListを使用する方法

分類Dev

Flask WTForms FieldList with BooleanField

分類Dev

BooleanFieldを使用したFlaskWTForms FieldList

分類Dev

FieldList内の動的に調整されたフォーム

分類Dev

フォーカスをformField1に設定します

分類Dev

WTForm FormField populate values

分類Dev

カスタム属性を使用してFieldListを並べ替えます

分類Dev

VarcharのFormFieldを<select> +その他にフリーテキストとして

分類Dev

formfield_for_manytomanyを使用する場合、filter_horizontalは機能しません

分類Dev

jQueryを使用してWTFormsTextFieldをFieldListに動的に追加するにはどうすればよいですか?

分類Dev

StringFieldのFieldListのエントリを郵便配達員からフラスコに送信します

分類Dev

多対多のポリモーフィック関係で「不明な列 'tag_tag_id' in'fieldlist '」エラー

分類Dev

MathMLタグがJavaFXWebViewで正しくレンダリングされない

分類Dev

SceneKitでシーンが正しくレンダリングされない

分類Dev

FPDFが正しくレンダリングされない

分類Dev

DjangoSelectDateWidgetが正しくレンダリングされない

分類Dev

Flexdivが正しくレンダリングされない

分類Dev

BlazoriseDataGridが正しくレンダリングされない

分類Dev

Javascriptが正しくレンダリングされない

分類Dev

AutoCompleteBoxが正しくレンダリングされない

分類Dev

JavaFxが正しくレンダリングされない

分類Dev

ngClassが正しくレンダリングされない

分類Dev

BootsFacesselectMultiMenuが正しくレンダリングされない

分類Dev

androidopenglが正しくレンダリングされない

分類Dev

IEでリストが正しくレンダリングされない

分類Dev

Symfony-ソナタ管理者-FormFieldからリストにリダイレクト

分類Dev

iTextを使用して位置のないセクションにFormFieldを追加するにはどうすればよいですか?

分類Dev

Flexbox列の画像がChromeで正しくレンダリングされない

分類Dev

表示:IE11でflexが正しくレンダリングされない

Related 関連記事

  1. 1

    FormFieldのWTForms FieldListを使用する方法

  2. 2

    Flask WTForms FieldList with BooleanField

  3. 3

    BooleanFieldを使用したFlaskWTForms FieldList

  4. 4

    FieldList内の動的に調整されたフォーム

  5. 5

    フォーカスをformField1に設定します

  6. 6

    WTForm FormField populate values

  7. 7

    カスタム属性を使用してFieldListを並べ替えます

  8. 8

    VarcharのFormFieldを<select> +その他にフリーテキストとして

  9. 9

    formfield_for_manytomanyを使用する場合、filter_horizontalは機能しません

  10. 10

    jQueryを使用してWTFormsTextFieldをFieldListに動的に追加するにはどうすればよいですか?

  11. 11

    StringFieldのFieldListのエントリを郵便配達員からフラスコに送信します

  12. 12

    多対多のポリモーフィック関係で「不明な列 'tag_tag_id' in'fieldlist '」エラー

  13. 13

    MathMLタグがJavaFXWebViewで正しくレンダリングされない

  14. 14

    SceneKitでシーンが正しくレンダリングされない

  15. 15

    FPDFが正しくレンダリングされない

  16. 16

    DjangoSelectDateWidgetが正しくレンダリングされない

  17. 17

    Flexdivが正しくレンダリングされない

  18. 18

    BlazoriseDataGridが正しくレンダリングされない

  19. 19

    Javascriptが正しくレンダリングされない

  20. 20

    AutoCompleteBoxが正しくレンダリングされない

  21. 21

    JavaFxが正しくレンダリングされない

  22. 22

    ngClassが正しくレンダリングされない

  23. 23

    BootsFacesselectMultiMenuが正しくレンダリングされない

  24. 24

    androidopenglが正しくレンダリングされない

  25. 25

    IEでリストが正しくレンダリングされない

  26. 26

    Symfony-ソナタ管理者-FormFieldからリストにリダイレクト

  27. 27

    iTextを使用して位置のないセクションにFormFieldを追加するにはどうすればよいですか?

  28. 28

    Flexbox列の画像がChromeで正しくレンダリングされない

  29. 29

    表示:IE11でflexが正しくレンダリングされない

ホットタグ

アーカイブ