Flask - как мне создать WTF-формы с динамическим c количеством полей? - PullRequest
0 голосов
/ 07 апреля 2020

Поскольку моему веб-сайту нужно несколько форм с различными таблицами БД, я хочу создать значения в одном файле html, вот что у меня есть. forms.py:

class Admin_AccountForm(FlaskForm):
    acctype = SelectField('Account Type', choicesS=[('Member', 'Member'), ('Admin', 'Admin')], validators=[DataRequired()])
    username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=30)])
    confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')

(представьте себе несколько таких форм, но с разным количеством полей и имен) website.py (основная):

@app.route('/admin/display/<string:mode>/create')
def admin_create(mode):
    form = Admin_AccountForm()
    formfield = ['acctype', 'username', 'email', 'password', 'confirm_password', 'submit']
    return render_template('admin_create.html', form = form, mode = mode, formfield = formfield)

(все остальное работает, поэтому просто сосредоточиться на проблеме) admin_create. html:

<form method="POST" action="">
    {{ form.hidden_tag() }}
    <fieldset>
        <div class="form-group">
            {{ form.formfield[0].label(class="form-control-label") }}

            {% if form.formfield[0].errors %}
                {{ form.formfield[0](class="form-control form-control-md is-invalid") }}
                <div class="'invalid-feedback">
                    {% for error in form.formfield[0].errors %}
                        <span>{{ error }}</span>
                    {% endfor %}
                </div>
            {% else %}
                {{ form.formfield[0](class="form-control form-control-md") }}
            {% endif %}
        </div>
    </fieldset>
    <div class="form-group form-btn">
        {{ form.submit(class="btn") }}
    </div>
</form>

, как вы можете видеть, я не смог заставить работать форму, так как я могу сделать так, чтобы поле формы [0] превратилось в acctype , и то, что я хотел, было что-то вроде этого

<!-- the formfield should change to acctype so the form works with any forms I have -->
{{ form.acctype(class="form-control form-control-md") }}

кто-то, пожалуйста, помогите мне решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...