0

0

Flask Admin怎么用_Flask-Admin扩展快速生成CRUD管理后台

P粉602998670

P粉602998670

发布时间:2026-03-10 18:11:27

|

533人浏览过

|

来源于php中文网

原创

flask-admin启动报assertionerror因modelview未显式指定endpoint导致路由冲突,须为每个视图设唯一endpoint如'auth_user';datetimefield需用column_formatters配合时区转换显示中文日期;自定义跳转应设post_create_redirect等属性确保路径匹配;只读字段用form_widget_args设readonly而非form_excluded_columns。

flask admin怎么用_flask-admin扩展快速生成crud管理后台

Flask-Admin 为什么一跑就报 AssertionError: View function mapping is overwriting an existing endpoint function

这是最常见启动失败原因:多个 ModelView 类注册了同名或未显式指定 endpoint,导致 Flask 内部路由冲突。

  • 每个 ModelView 子类必须显式传入 endpoint 参数,比如 endpoint='user_admin',不能依赖默认值
  • 如果用了 admin.add_view(ModelView(User, db.session)) 这种写法,ModelView 默认的 endpoint 是模型类名小写(如 user),一旦有两个模型都叫 User(比如不同模块),就炸
  • 更稳妥的做法是统一用带命名空间的 endpoint,例如 endpoint='auth_user'endpoint='blog_post'

怎么让 DateTimeField 显示中文日期,而不是 UTC 时间戳

Flask-Admin 默认用 Python 原生 datetime 渲染,不自动时区转换,数据库存 UTC、前端显示却像“1970-01-01 00:00:00”,本质是没做时区对齐。

FaceSwapper
FaceSwapper

FaceSwapper是一款AI在线换脸工具,可以让用户在照片和视频中无缝交换面孔。

下载
  • 确保数据库字段类型是 DateTime(不是 StringText),且 SQLAlchemy 模型里没手动转成字符串
  • ModelView 中覆盖 column_formatters,用 pytzzoneinfo 转本地时间:
    column_formatters = {
        'created_at': lambda v, c, m, p: m.created_at.astimezone(pytz.timezone('Asia/Shanghai')).strftime('%Y-%m-%d %H:%M')
    }
  • 别在 __init__ 里直接改 m.created_at,会污染原始数据;只在展示层格式化

自定义表单提交后跳转到列表页,而不是空白页或 404

默认行为是提交成功后重定向到当前 view 的 url,但如果你改过 endpoint 或加了 URL 前缀,这个跳转地址可能失效。

  • 重写 create_modelupdate_model 方法,在最后 return 前手动调用 redirect(url_for('admin.index'))
  • 更推荐的方式是设置 post_create_redirectpost_update_redirect 属性:
    class UserView(ModelView):
        post_create_redirect = '/admin/user'
        post_update_redirect = '/admin/user'
  • 注意路径必须和你注册 view 时的 url 完全一致(包括末尾斜杠),否则 Flask 找不到 endpoint

怎么禁用某个字段的编辑,但又让它在列表页和详情页可见

form_excluded_columns 会彻底隐藏字段,连列表都不显示;真正要的是“只读”而非“隐藏”。

  • form_widget_args 设置 readonly
    form_widget_args = {
        'id': {'readonly': True},
        'created_at': {'readonly': True}
    }
  • 配合 column_list 显式声明想展示的字段,避免漏掉只读字段:
    column_list = ('id', 'username', 'created_at')
  • 如果字段是外键关联对象(比如 user.role),只读设置不会阻止数据库写入,但用户点不开下拉框或输入框——这才是你想要的“可见不可改”
Flask-Admin 的坑不在功能少,而在它太依赖 Flask 和 WTForms 的隐式约定。比如 endpoint 冲突、时区没对齐、跳转 URL 和注册路径不一致,这些都不是报错信息里直接说出来的,得看它内部怎么拼 URL、怎么查 endpoint map。调试时先盯住 admin.add_view() 那一行的参数,再核对浏览器地址栏跳转目标是否真能被路由匹配上。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python Flask框架
Python Flask框架

本专题专注于 Python 轻量级 Web 框架 Flask 的学习与实战,内容涵盖路由与视图、模板渲染、表单处理、数据库集成、用户认证以及RESTful API 开发。通过博客系统、任务管理工具与微服务接口等项目实战,帮助学员掌握 Flask 在快速构建小型到中型 Web 应用中的核心技能。

103

2025.08.25

Python Flask Web框架与API开发
Python Flask Web框架与API开发

本专题系统介绍 Python Flask Web框架的基础与进阶应用,包括Flask路由、请求与响应、模板渲染、表单处理、安全性加固、数据库集成(SQLAlchemy)、以及使用Flask构建 RESTful API 服务。通过多个实战项目,帮助学习者掌握使用 Flask 开发高效、可扩展的 Web 应用与 API。

81

2025.12.15

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

1010

2023.08.02

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

334

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

775

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

220

2023.09.04

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

4

2026.03.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号