Как мне динамически создавать формы с помощью Python Flask - PullRequest
0 голосов
/ 15 мая 2019

У меня есть большая модель, которую я определил в моем файле models.py, и у меня есть форма, которая ее обслуживает.Нужно ли явно указывать каждое поле для формы или есть способ динамически создать его, чтобы в моем коде не было повторений?

forms.py

class CustomerForm(FlaskForm):  # must be a better way

    """ Declarative Form base class responsible for customers
        variable names match customers/models.py and in the corresponding HTML files """

    tpi_name = StringField('Enter Your Name')
    tpi_ref = StringField('Enter Your Email')
    company_name = StringField('Company Name (*)', validators=[InputRequired()])
    company_type = StringField('Company Type')
    company_reg = StringField('Company Registration Number')

и forms.py

class Post(db.Model):  # Must be a better way

    """ Creates the table Post and models the structure of the database table """
    tpi_name = db.Column(db.String(100), nullable=False)
    tpi_ref = db.Column(db.String(100), nullable=False)
    company_name = db.Column(db.String(100), nullable=False)
    company_type = db.Column(db.String(100), nullable=False)
    company_reg = db.Column(db.Integer, nullable=False)

Так что здесь много повторений, есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Может быть, вам нравится использовать библиотеку flask-admin: https://flask -admin.readthedocs.io / en / latest /

Как это работает? Основная концепция Flask-Admin заключается в том, что она позволяет создавать сложные интерфейсы, объединяющие отдельные представления в классы: каждая веб-страница вы видите на веб-интерфейсе, представляет метод в классе, который был явно добавлен к интерфейсу.

Эти классы представления особенно полезны, когда они привязаны к конкретной базе данных. модели, потому что они позволяют группировать все обычные создания, чтения, обновления, Удалите (CRUD) логику представления в один, отдельный класс для каждой из ваших моделей.

Пример:

from flask_admin.contrib.sqla import ModelView

# Flask and Flask-SQLAlchemy initialization here

admin = Admin(app, name='microblog', template_mode='bootstrap3')
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(Post, db.session))
0 голосов
/ 15 мая 2019

Я лично не пробовал это, но сталкивался с этим: http://flask.pocoo.org/snippets/60/

Звучит так, будто вы обсуждаете, чего вы пытаетесь достичь, если я правильно понимаю ваш вопрос.

...