首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用flask-admin和sqlalchemy;现在我正在尝试创建一个表单来添加/删除/编辑表

使用 Flask-Admin 和 SQLAlchemy,你可以轻松地创建一个管理界面来添加、删除和编辑数据库中的表记录。以下是一个完整的示例,展示了如何使用 Flask-Admin 和 SQLAlchemy 创建一个简单的管理界面。

步骤 1:安装依赖

首先,确保你已经安装了 Flask、Flask-Admin 和 Flask-SQLAlchemy。你可以使用 pip 来安装这些依赖:

代码语言:javascript
复制
pip install Flask Flask-Admin Flask-SQLAlchemy

步骤 2:设置 Flask 应用和数据库

创建一个 Flask 应用并配置 SQLAlchemy 数据库。

代码语言:javascript
复制
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
app.config['SECRET_KEY'] = 'mysecretkey'
db = SQLAlchemy(app)
admin = Admin(app, name='MyApp', template_mode='bootstrap3')

步骤 3:定义模型

定义一个 SQLAlchemy 模型。例如,一个简单的用户模型:

代码语言:javascript
复制
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

步骤 4:创建数据库

在第一次运行时,创建数据库和表:

代码语言:javascript
复制
with app.app_context():
    db.create_all()

步骤 5:添加 Flask-Admin 视图

使用 Flask-Admin 的 ModelView 来创建一个管理界面视图,并将其添加到 Flask-Admin 实例中。

代码语言:javascript
复制
admin.add_view(ModelView(User, db.session))

完整示例

将所有代码整合在一起,得到一个完整的示例:

代码语言:javascript
复制
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydatabase.db'
app.config['SECRET_KEY'] = 'mysecretkey'
db = SQLAlchemy(app)
admin = Admin(app, name='MyApp', template_mode='bootstrap3')

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.username}>'

admin.add_view(ModelView(User, db.session))

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

运行应用

保存上述代码到一个文件(例如 app.py),然后运行:

代码语言:javascript
复制
python app.py

打开浏览器并访问 http://127.0.0.1:5000/admin,你将看到一个管理界面,可以添加、删除和编辑用户记录。

自定义 ModelView

你可以自定义 ModelView 以满足特定需求。例如,限制某些字段的编辑,或者添加自定义的验证逻辑:

代码语言:javascript
复制
class UserAdmin(ModelView):
    column_list = ('id', 'username', 'email')
    form_columns = ('username', 'email')
    column_searchable_list = ('username', 'email')
    column_filters = ('username', 'email')

admin.add_view(UserAdmin(User, db.session))

通过这种方式,你可以使用 Flask-Admin 和 SQLAlchemy 创建一个功能强大的管理界面,轻松管理数据库中的表记录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

flask_admin使用教程

通过创建ModelView类的实例实现这一点,您可以从Flask管理员的一个内置ORM后端导入该类。...用于添加新记录的创建视图。 用于更新现有记录的编辑视图。 可选的只读详细信息视图。 有许多选项可用于自定义这些内置视图的显示功能。...该示例只使用内置的注册登录视图,但您可以使用相同的方法包括其他视图,如忘记密码、发送确认等。...,请在列表视图中启用内嵌编辑: column_editable_list = ['name', 'last_name'] 或者,让添加编辑表单显示在列表页的模式窗口中,而不是专用的创建编辑页面...', 'Mrs'), ('MS', 'Ms'), ('DR', 'Dr'), ('PROF', 'Prof.') ] } 要从创建编辑表单删除字段

4.2K20

动态博客的后台定制

搭建动态博客的初衷就是想随时随地,只要一个浏览器,就能更新博客。那么就需要一个后台管理文章,包含文章编辑器,各种表单控件。...编辑器 先来解决文本编辑器的问题,CKEditor 功能强大,但只是一个富文本编辑器。对于已经习惯 Markdown 写作的来说,只管写,排版渲染就交给浏览器去做。...找了很多内嵌 Markdown 编辑器,既要外观匹配,还要最好带预览功能。最终选择了 Simple MDE。...已经事先把 Flask-Admin 的基模板给换成了 bootstrap4。这个编辑器全屏模式下支持分栏预览,非常惊艳。...最终效果如下: 美中不足 动态添加做好了,那么删除呢?想像一下这个使用场景,你修改文章,把一个标签删除了,这个标签已经没有任何文章使用,那你肯定不希望它再出现在标签列表里吧?

54010
  • 测试开发之路--Flask 之旅 (五):后台管理

    例如删除用户,控制数据库中的,管理配置文件等等。...好在Flask依然提供了一个扩展模块帮助我们快速搭建一个后台管理系统,这个模块就是--Flask-Admin Flask-Admin 这是一个很有用使用起来也很简单模块。...数据库管理 首先我们添加数据库的管理功能,按下面的代码进行初始化。...接下来我们使用admin.add_view方法将我们的model视图添加进来,分别添加User,RoleEnv,这些是我们之前就通过Flask-SQLAlchemy创建好的。...所以为了能管理在数据库中记录过的配置开发人员的这些不在这个服务中使用的配置文件(额,感觉说的这么乱呢),我们添加一个文件管理功能。

    1.5K10

    【Web开发】Flask框架基础知识

    SQLAlchemy一个关系型数据库框架,它提供了高层的ORM底层的原生数据库的操作。flask-sqlalchemy一个简化了SQLAlchemy操作的flask扩展。...: # db.create_all() # 删除 # db.drop_all() if __name__ == '__main__': app.run() 本例中,首先需要手动创建数据库...zstar,然后配置数据库连接ip账号密码mysql://root:你的密码@127.0.0.1:3306/zstar,之后使用db.create_all()会创建前面定义出的数据,同理db.drop_all...()会删除前面定义出的数据。...本例中,定义了两个接口,第一个根目录接口,分别尝试了通过sql从直接查询调用对象进行查询的两种查询方式,第二个/create接口,实现了向数据Role中插入一个名称为admin的用户数据。

    2.1K20

    带你认识 flask 全文搜索

    基于上述分析,使用Elasticsearch,但我将以一种非常容易切换到另一个搜索引擎的方式实现所有文本索引搜索功能。...添加删除索引条目的函数将SQLAlchemy模型作为第二个参数。 add_to_index()函数使用添加到模型中的__searchable__变量构建插入到索引中的文档。...更好的解决方案是在SQLAlchemy数据库进行更改时自动触发这些调用。 用对象替换ID的问题可以通过创建一个从数据库读取这些对象的SQLAlchemy查询解决。...这将是一个约定,所有索引都将用Flask-SQLAlchemy模型关联的名。该函数返回结果ID列表结果总数。...session对象具有before_commit()中添加的_changes变量,所以现在可以迭代需要被添加,修改删除的对象,并对app/search.py中的索引函数进行相应的调用。

    3.5K20

    带你认识 flask 错误处理

    启动应用,并确保至少有两个用户注册,以其中一个用户身份登录,打开个人主页并单击“编辑”链接。在个人资料编辑器中,尝试将用户名更改为已经注册的另一个用户的用户名,boom!...绝对不希望用户知道崩溃是由数据库错误引起的,或者正在使用什么数据库,或者是的数据库中的一些字段名称。所有这些信息都应该对外保密。 但是也有一些不尽人意之处。...由于这些消息正在写入到一个文件,希望它们可以存储尽可能多的信息。所以我使用的格式包括时间戳、日志记录级别、消息以及日志来源的源代码文件行号。...在注册期间,需要确保在表单中输入的用户名不存在于数据库中。在编辑个人资料表单中,必须做同样的检查,但有一个例外。如果用户不改变原始用户名,那么验证应该允许,因为该用户名已经被分配给该用户。...除了有很多服务器进程并且非常繁忙的应用之外,这种情况是不太可能的,所以现在不会为此担心。 此时,你可以尝试再次重现该错误,以了解新的表单验证方法如何防止该错误。

    2.1K30

    Flask 自定义模型类

    自定义模型类 本篇章介绍Flask自定义模型类的概念,以及写一个快速入门的示例,基本内容如下: 定义两个模型类,并创建数据库 创建数据,写入数据库 编写模板以及视图函数,在页面展示数据 定义模型 模型表示程序使用的数据实体...,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据库。...类中的属性对应数据库中的列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数的第一个参数是数据库列模型属性类型。 如下示例:定义了两个模型类,作者和书名。...db.drop_all() # 创建所有 db.create_all() 执行脚本之后,到mysql中查看表结构如下。...从上面的几个示例,基本清楚讲解了模型类如何定义,表单如何设置,模板中如何展示数据,表单如何提交数据,数据如何设置删除等功能。

    1.6K10

    24. Flask 自定义模型类

    自定义模型类 本篇章介绍Flask自定义模型类的概念,以及写一个快速入门的示例,基本内容如下: 定义两个模型类,并创建数据库 创建数据,写入数据库 编写模板以及视图函数,在页面展示数据 定义模型 模型表示程序使用的数据实体...,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据库。...类中的属性对应数据库中的列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数的第一个参数是数据库列模型属性类型。 如下示例:定义了两个模型类,作者和书名。...db.drop_all() # 创建所有 db.create_all() 执行脚本之后,到mysql中查看表结构如下。...,模板中如何展示数据,表单如何提交数据,数据如何设置删除等功能。

    97210

    使用FastAPI重写Django官网Polls教程

    我们上面创建的端点是静态的,它们不与数据库交互。在下一节中,您将了解如何使用SQLAlchemy进行 ORM Pydantic创建模型/计划,使我们的 API 充满活力。...我们将创建以下API端点: 创建投票问题 列出所有投票问题 获取问题详细信息 编辑投票问题 删除投票问题 为特定的投票问题创建选择 更新特定问题的投票 我们的项目结构如下所示,一共就5个文件。...好的,到目前为止还不错,我们现在使用pydantic库创建数据接口schema,它的主要作用是做类型强制检查,有点类似DRF的序列化器。...尝试删除,我们的应用程序将抛出一个错误。..., "pub_date": "2020-05-14T12:58:05.043000", "id": 1 }] 获取、编辑删除投票问题 def get_question_obj(db

    1.5K20

    什么是关系型数据库非关系型数据库_常用的三种关系型数据库

    比如我现在表单A 表单B 其中: 表单A 中有一个名为user_id的字段 表单B 中也有一个名为user_id的字段 现在把他们建立一种联系,当我去修改表单A的user_id的值时,表单B 中的...接下来,来看Mysql的使用。 为了后期我们方便使用先在这里教大家创建一个mysql账户。 我们使用默认的root 超级管理员用户登录后,是这样的。...drop database [数据库名称]; 删除数据库[名称] truncate table [名]; 清空表单所有数据 delete table [名]; 删除表单 desc...Mysql 创建一个表单 我们先来手撸一个结构(以后就不用了,放❤) 可以看到,重点在于最后的创建结构。 我们分析一下那个Sql代码。...他就是Sqlalchemy 它是一个ORM框架,是由Mako的作者创建的。 我们先使用pip3安装一下。

    4.7K10

    测试开发之路--Flask 之旅 (三):数据库

    因为不能说每个用户上来都能随便的重启删除环境吧,太容易出事故了。所以我们想起码有最基本的隔离性。 Flask扩展模块 上一次我们使用了Flask-WTF这个针对于表单的扩展模块。...所以再加入Flask-Security后,Flask-SQLAlchemyFlask-Login的使用方式都跟以前有些不太一样了。接下来我会一个一个介绍 创建数据库 我们先解决数据库的问题吧。...解释解释吧。 Flask-SQLAlchemy一个ORM框架,它组织了数据库到类的影射。所以我们可以使用管理这些类对象的方式管理数据库。...3张一个roles_users的。 数据库操作 现在我们有了,我们想初始化一些数据。 所以我们先看看一些基础的操作。...接下来就可以看到我们使用很方便的方式创建userrole。 并且使用add_role_to_user的方式为一个用户添加角色。Flask-Security为我们提供了很多有用的方法。

    1.2K20

    用Flask写了一个图书作者管理项目(附完整代码)

    首先,我们需要通过flask_sqlalchemy创建我们的数据以及里面的数据: from flask import Flask,render_template from flask_sqlalchemy...author_luo.id) db.session.add_all([book_luo,book_pac,book_pac]) db.session.commit() 通过上面代码,我们创建了两个数据并在数据添加了相关的数据...第一步我们成功做完,成功的通过flask_sqlalchemy创建了数据和数据的导入。 既然数据解决了,接下来就是来写前端相关的东西了。...,并且在视图函数中进行表单数据的获取储存。...接下来我们再为这个项目添加一个删除功能,整体的思路很简单,通过get请求拿到前端发送过来的book_id,后端再对这个book_id进行删除处理。

    63110

    小记 - Flask基础

    Flask使用模板引擎Jinja2渲染模板 返回HTML 前面都是写如何返回字符串,那么如果需要返回HTML模板,则可以通过render_template实现 render_template()函数中第一个参数是模板文件名...SQLAlchemy一个关系型数据库框架,它提供了高层ORM底层的原生数据库操作,Flask-sqlalchemy一个简化了的SQLAlchemy操作的扩展。...SQLAchemy实际上是对数据库的抽象,让开发者不用直接SQL语句打交道,而是通过Python对象操作数据库。...() # 回滚操作 db.session.delete(user) # 删除数据 db.session.commit() # 提交到数据库 查询 简单应用 先建添加数据 # -*-...,返回一个新查询 group_by() 根据指定条件对原查询进行分组,返回一个新查询 关系引用 有时候需要一些属性方便查询数据,但是这些属性不能出现在数据库的字段中 relationship():sqlalchemy

    2.9K10

    Python Flask 学习笔记 —— 三(Flask 扩展学习 )

    (ORM)操作数据库 4.1 创建实体类(建) 4.2 单操作之 —— 增加数据 4.3 单标操作之 —— 查询数据 4.4 单操作之 —— 修改数据 4.5 单操作之 —— 删除数据 4.6...Flask-wtf 来生成我们需要的表达那效果 二、 使用 Flask-WTF 扩展验证表单 使用 witf 创建表单,主要需要如下几步完成 安装 flask-wtf:pip install Flask-WTF...自定义一个表单类 然后渲染到 HTML 中 补充验证 验证需要导入验证函数 2.1 定义表单验证类 为了展示方便,表单类定义在同一个文件中 # 导入自定义表单需要的字段 from wtforms...pymysql 演示 3.1 安装 pymysql 应该可以安装的上,使用虚拟环境的默认环境安装的 使用默认源安装:pip install pymysql 如果速度太慢,可以使用一个方式:pip3...创建实体类(建创建一个 Test_sql.py 文件 (创建实体类,并用 该扩展生成相对应的创建一个 Test_sql_config.cfg 的配置文件 (Flask 的属性配置文件) 创建一个

    1.1K10

    Flask构建微电影(一) 第一章、项目介绍第二章、环境搭建

    第一章、项目介绍  1.1.前言           本教程将带领大家如何使用flask框架开发微电影网站。...学会使用模板自动转义、定义过滤器、定义全局上下文处理器、jinja2语法、包含、继承、定义宏 学会使用flask-wtf定义表单模型、字段类型、字段验证、视图处理表单、模板使用表单 学会使用flask-sqlalchemy...定义数据库模型、添加数据、修改数据、查询数据、删除数据、数据库事件、数据迁移 学会使用蓝图优化项目结构,实现微电影网站前台于后台业务逻辑 学会flask的部署方法、安装编译nginx服务、安装编译python3.6...pycharm编辑器的使用、介绍pip下载工具的使用 (3)项目优化与模型设计 使用flask的蓝图Blueprint规划项目结构 使用flask sqlalchemy定义业务需求相关的数据库模型...1.6.技术储备要求 只要你是pythoner,你就应该学会flask,作为一个合格的pytoner,只掌握一个框架是不够的,如果你有过其它python框架,例如django的使用经验,对比不同框架学习

    1.7K00

    Flask框架入门与实战:从基础应用到数据库集成

    定义路由:使用@app.route('/')装饰器定义URL路由,表示当访问根路径(/)时,将会调用home函数。...五、构建一个简单的表单应用在理解了基本原理后,让我们进一步扩展我们的Flask应用,添加一个简单的表单功能。这个表单将允许用户输入他们的名字,并在提交后显示个性化的欢迎信息。...FlaskForm的表单类,包含一个字符串字段name一个提交按钮submit。...SQLALCHEMY_TRACK_MODIFICATIONS 选项用于关闭Flask-SQLAlchemy的事件系统,从而节省内存。3. 定义数据模型接下来,我们定义一个数据模型(数据库)。...创建数据库在Python Shell中,我们可以使用以下命令创建数据库:from app import dbdb.create_all()这将根据我们定义的模型在site.db中创建相应的结构。

    4610

    SqlAlchemy 2.0 中文文档(三)

    类的实例代表行 而在前一个示例中,我们使用 Python 字典发出了一个 INSERT,以指示我们要添加的数据,使用 ORM 时,我们直接使用我们定义的自定义 Python 类,在使用 ORM 声明性表单定义元数据中...除此之外,现在正在删除的 patrick 对象实例不再被视为在 Session 中持久存在,这可以通过包含性检查显示: >>> patrick in session False 然而,就像我们对 sandy...类的实例代表行 而在上一个示例中,我们使用 Python 字典发出了一个 INSERT,以指示我们要添加的数据,使用 ORM 时,我们直接使用我们在 使用 ORM 声明性表单定义元数据 中定义的自定义...添加对象到会话 为了逐步说明添加过程,我们将创建一个使用上下文管理器的Session(因此我们必须确保稍后关闭它!)...类的实例代表行 在前面的示例中,我们使用 Python 字典发出了一个 INSERT,以指示我们想要添加的数据,而使用 ORM 时,我们直接使用了我们定义的自定义 Python 类,在使用 ORM 声明式表单定义元数据回到之前

    37120

    Python CMS库教程:构建你的内容管理系统

    内容管理系统(CMS)是用于创建编辑管理网站内容的软件应用程序。Python拥有丰富的库框架,可以帮助你构建强大的CMS系统。...在本教程中,我们将介绍如何使用Python中的一些流行库构建自己的简单CMS系统。我们将使用以下库: Flask:一个轻量级的Web应用框架。...在app.py中添加以下代码配置数据库: pythonCopy codefrom flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI...接下来,我们将创建一个模型表示我们的CMS中的内容。...这个表格包含id、title、contentdate_posted字段,分别表示文章的唯一ID、标题、内容发布日期。 步骤5:创建表单 我们将使用Flask-WTF创建表单

    2.3K22

    带你认识 flask 中的数据库

    本应用可以像大多数其他应用一样,使用任何一种类型的数据库实现,但是出于上述原因,使用关系数据库。 在第三章中,向你展示了第一个Flask扩展,在本章中,还要用到两个。...ORM允许应用程序使用高级实体(如类,对象方法)而不是SQL管理数据库。ORM的工作就是将高级操作转换成数据库命令。...usernameemail字段的用途不言而喻,password_hash字段值得提一下。想确保正在构建的应用采用安全最佳实践,因此不会将用户密码明文存储在数据库中。...回想一下,在User类中创建的db.relationship为用户添加了posts属性,并为用户动态添加了author属性。使用author虚拟字段调用其作者,而不必通过用户ID来处理。...在microblog.py中实现一个函数,它通过添加数据库实例模型创建一个shell上下文环境: from app import app, dbfrom app.models import User

    2.3K20

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券