1.关于flask的jsonify与json.dumps的一些追溯和思考
2.学生学Flask中超好用的扩展插件
3.科学家开发一款MD小白友好型模拟工具
4.使用Flask-Avatars在Flask项目里设置头像
5.Python Web | Flask使用Flask-SQLAlchemy对数据库操作详解一(配置、一对一、多对一、多对多关系)
6.Python Flask 开发,Flask 的 Swagger 神器 —— Flask-RESTX
关于flask的jsonify与json.dumps的一些追溯和思考
有一天,我遇到了一个服务器报警问题,仿大番薯源码追踪错误栈时,发现是由于在使用 Flask 的 jsonify 函数时传入的字典中混入了 string 和 int 类型的键导致的。修改数据后,我开始思考这一设计背后的逻辑以及为何会如此设定。源码追溯路径指向 JSONDecoder、flask.json.__init__.py 及 _dump_arg_defaults。分析这部分源码,我发现项目使用的是继承自 Flask 的 JSONDecoder,稍作修改以兼容如 bson.ObjectId 和 datetime 等数据类型,其主体基于标准库中的 JSONEncoder。
进一步深入 JSONEncoder 的源码,我发现 sort_keys 的使用在 JSONEncoder._iterencode_dict 中。此时,我开始思考是否可以修改为始终使用默认的 False,以确保 key 为纯字符串。然而,官方为何没有选择这一方案?我开始在 GitHub 上寻找答案,最终在 issue 中找到了线索。eclipse想看源码在 Python 2 中确实如我所想,但在 Python 3 中,设计发生了改变。大佬们解释了背后的理由。
深入思考后,我倾向于支持 Python 3 的设计选择。首先,明确数据处理逻辑(如是否排序)是至关重要的。这里,我认为 Flask 的默认设置为 False 是个错误,应该与标准库保持一致。其次,确保数据类型的一致性是动态语言的局限性之一,这也是我越来越偏爱 Go 的原因。
从工作角度来看,我得出以下思考:永远不要依赖传入的数据,务必进行验证,尤其是在关键业务中。这不仅是对 Flask 设计的反思,也是对编程实践的提醒,强调了数据验证和明确数据处理逻辑的重要性。
学生学Flask中超好用的扩展插件
Flask中超好用的5个扩展插件1、Flask-Admin
Django中有个杀手锏的激光雕源码功能就是自带Admin面板,所有数据都可以通过Admin后台来操作Flask-Admin 就是一个功能和Django-Admin非常类似的库,有了它你再也不需要直接去数据库查数据改数据了。
Github地址: /flask-admin/flask-admin
2、Flask-SQLAlchemy
Flask-SQLAlchemy 直接在SQLAlchemy的基础上封装了一层,简化了配置以及SQLAlchemy库的导入路径
3、Flask-Migrat
Flask-migrate 是一个SQLAlchemy 数据库升级迁移工具,基于Alembic实现,它提供了一系列命进行数据库升级撤回操作。
4、Flask-JWT-Extended
前后端分离项目基本都是使用JWT来做用户认证这是一个用来实现JWT功能的扩展,提供了很多配置参数,非常灵活,直接在config中配置就可以,省去很多造轮子的麻烦。
5、Flask-Limiter
Flask-Limiter 用于做接口频率限制的,它可以灵活基于不同资源来限制请求的次数,例如你可以对整个app做限制,页可以对某个blueprint限制,或者是对路由做限制,还支持自定义配置。
科学家开发一款MD小白友好型模拟工具
来自微信公众号分子动力学的文章报道了一项新进展,即科学家们在巴西朗多尼亚州联邦大学的html封装源码生物信息与药化实验室Fernando Berton Zanchi团队开发了一款名为Visual Dynamics (VD) 的Web工具。这款工具旨在简化在GROMACS中的生物学模拟过程,使之更加用户友好。 VD允许用户通过图形界面无须编程知识,提交自由形式或与配体结合的蛋白质模拟任务。模拟结束后,用户可下载包含图形分析和日志文件的资料。这款工具是基于Python的Flask框架开发的,其源代码可以在GitHub上免费获取,地址为:/LABIOQUIM/vi... 自年分子动力学(MD)首次应用于生物学以来,随着计算能力的提升和编程技术的进步,MD在不断发展。尽管早期MD软件如GROMACS、AMBER和NAMD采用命令行界面(CLI),但现在,Web界面被视为GUI的进化。然而,MD的执行方式依然主要依赖于命令行,这给非专业用户带来了挑战。 Visual Dynamics的出现解决了这个问题,它提供了两种模拟选项:独立的生物分子(如载脂蛋白)和生物大分子与小配体的相互作用。用户可以上传PDB文件,选择力场等参数,甚至下载包含执行命令的钓鱼源码购买文本文件。对于在Web服务器上运行,只需点击“Execute”,整个过程将自动进行。 模拟过程包括经典的准备、溶剂化等步骤,结果分析则通过Grace应用程序生成的图像,用户可以直观地查看。此外,VD支持在线下载日志文件和MDps文件,使得数据管理和分析更为便捷,即使是缺乏计算机技能的用户也能操作。这款工具的目标是降低MD应用的学习门槛,让研究者在无需担心技术细节的情况下,专注于数据分析。使用Flask-Avatars在Flask项目里设置头像
Flask-Avatars是Flask项目中常用的扩展之一,主要用来实现头像的设置。
在大多数Web程序中,头像的设置都是必不可少的。根据项目的需求不同,有的项目可以选择使用Gravatar提供的头像服务,而有的项目则可能需要提供自定义头像设置。Flask-Avatars几乎满足了所有常见的头像需求。
Flask-Avatars的GitHub主页为:github.com/greyli/flask...
安装Flask-Avatars需要使用pip进行安装。与其它扩展类似,你需要实例化从flask_avatars导入的Avatars类,并传入app实例。如果你使用工厂函数创建程序实例,那么这里也可以不传入程序实例app,在工厂函数中对这个avatars对象调用init_app()方法时再传入app实例。
Flask-Avatars内置了几个默认头像,可以用来作为用户注册后的初始头像,或是作为博客评论者的头像。在模板中调用avatars.default()即可获取URL。你可以通过size参数来设置尺寸,默认为m,其他可选值有l和s。
在模板中调用avatars.gravatar()方法并传入Email散列值即可获取Gravatar的头像URL。Email散列值可以通过特定的方式获取。
Robohash是一个生成随机机器人头像的服务。在模板中调用avatars.robohash()并传入随机文本作为参数即可获取Robohash的头像URL。
Flask-Avatars通过Avatars.io提供了社交头像获取服务,支持Facebook、Twitter、Instagram和Gravatar。通过在模板中调用avatars.social_media()方法并传入用户名(username)即可获取对应的头像URL,通过size参数可以设置尺寸,可选值为small、medium和large。通过platform参数可以设置平台,默认为twitter,可选值为twitter、facebook、instagram和gravatar。
Gravatar服务可能会有不稳定的情况,此时可以在本地为用户生成头像(identicon)。通过avatar.generate()可以创建三个尺寸的头像,并保存到指定的位置。你可以将这个文件名保存到数据库中,并创建一个视图函数来提供头像文件。
Flask-Avatars基于Jcrop提供了头像裁剪功能。具体步骤可以参考文档中的相关部分。下面是示例程序中的裁剪页面。
Flask-Avatars支持的配置列表如下所示。Flask-Avatars的Git仓库中包含三个实例程序,你可以通过特定的方式来运行实例程序。
Python Web | Flask使用Flask-SQLAlchemy对数据库操作详解一(配置、一对一、多对一、多对多关系)
在Python Web开发中,Flask框架配合Flask-SQLAlchemy为我们提供了强大的数据库操作能力。本文将深入解析Flask-SQLAlchemy的配置、模型声明、以及一对一、多对一和多对多关系的处理方式。
首先,通过简单的配置和模型声明,我们可以使用Base类创建表示数据库表的类。例如,User表有id、username和email字段,其中id为主键,其他字段为唯一且非空字符串。Flask-SQLAlchemy支持多种列类型,如定义为Integer或String。
在关系处理方面,一对一关系如User和Address,定义为User.address = relationship(Address, uselist=False)表示每个User对应一个Address。多对一关系如Order和Customer,一个Order关联一个Customer,而Customer可以有多个Order,通过关系函数设置为Customer.orders。
多对多关系如Book和Author,通过一个中间表来实现,例如,通过Book_Author表,每本书可以有多个作者,每个作者也可以写多本书。
为了实践这些概念,这里有两个GitHub上的示例供你参考:[Flask+mysql简单问答网站](/QHCV/Flask_Book_Manage)。
查阅更深入的资料,可以参考[flask数据库教程](/Y/flask-vue-word-cloud。
项目动机来源于团队年终述职时使用词云展示工作成果,以及团队成员建议拓宽技术视野以促进个人成长的讨论。在接触过Python和R生成词云后,作为移动端开发者,作者想在本地搭建一个词云生成服务,于是开始了这个小项目。
项目目录结构分为backend(Flask实现的服务器端)和frontend(Vue实现的客户端)。运行效果展示了一个简洁的词云生成应用。
开发环境需求包括安装Node JS环境,详细信息可参考Node JS官网。
前端部分开发流程包括:
1. 安装vue-cli:Vue CLI是一个用于快速开发基于Vue.js的应用的完整系统。
2. 创建项目:通过命令行创建目录并初始化项目,设置项目基本信息。
3. 安装Element UI:Element UI是一个基于Vue的桌面端组件库。
4. 安装axios:axios是一个基于Promise的HTTP客户端,用于前后端分离应用。
5. 编写页面:修改App.vue,创建WordCloud.vue作为主要页面,实现点击事件并发送请求。
后端部分开发流程包括:
1. 安装Python3:使用Homebrew安装Python3。
2. 创建虚拟环境:为Python项目提供独立运行环境。
3. 安装flask:flask是Python的Web框架。
4. 安装词云生成库wordcloud。
5. 编写代码:参考The Flask Mega-Tutorial教程,实现应用功能。
本文通过一步步的实践指导,展示了如何使用Flask和Vue构建一个词云生成网站,适合Web开发初学者学习。项目已开源,欢迎关注和实践。
2024-12-23 01:35
2024-12-23 01:32
2024-12-23 00:34
2024-12-23 00:10
2024-12-23 00:06
2024-12-23 00:00
2024-12-22 23:44
2024-12-22 23:35