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的一些追溯和思考
有一天,我遇到了一个服务器报警问题,htran 源码追踪错误栈时,发现是由于在使用 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 中找到了线索。spring相关源码解读在 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小白友好型模拟工具
来自微信公众号分子动力学的文章报道了一项新进展,即科学家们在巴西朗多尼亚州联邦大学的网页前端作品源码生物信息与药化实验室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开发初学者学习。项目已开源,欢迎关注和实践。