如何使用Python Flask动态创建表单

时间:2019-05-15 09:40:40

标签: python-3.x flask flask-sqlalchemy flask-wtforms

我有一个很大的模型,已经在我的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 :(得分:0)

我还没有亲自尝试过,但是遇到过:http://flask.pocoo.org/snippets/60/

类似的声音在讨论如果我正确理解您的问题,您将要达到的目标。

答案 1 :(得分:0)

也许您喜欢使用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))