python-3.x - 如何使用 Python Flask 动态创建表单
问题描述
我有一个在我的 models.py 文件中定义的大型模型,并且我有为它服务的表单。我是否必须明确说明表单的每个字段,或者有没有办法动态创建它,所以我的代码中没有重复?
表格.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)
所以这里有很多重复,有没有更好的方法?
解决方案
也许你喜欢使用 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))
推荐阅读
- scala - 在 Scala Spark 中,我如何分组并将组的每个值除以该组中的行数
- python - 需要帮助将图像添加到函数内的 Tkinter 窗口中吗?
- .net - Balloon WinApi 弹出窗口中的非 ascii 字符
- mongodb - Mongorestore 不起作用(无效的 BSON 大小错误)
- rust - mio 什么时候做 epoll 实例?
- javascript - 发送表单时更改按钮/图标
- wordpress - 根据类别在 3 个不同的主页位置显示一种自定义帖子类型
- node.js - CastError:模型“Product”的路径“_id”处的值“XXX”转换为 ObjectId 失败
- azure - Azure ARM:deploymentScripts 和第一方应用程序标识错误
- swift - SwiftUI - 是否可以在显示后更改 ActionSheet 按钮文本?