Flask-Potion上的库控制系统,第0部分:准备所需的一切

引言


在我的工作中,我已经使用Flask-Potion一段时间了,该框架的主要优点是:与SQLAlchemy模型的非常方​​便的集成,自动生成Crud端点,存在药水客户端 (如果编写需要在另一个API中使用的API服务,则非常方便)服务)。


我注意到俄语中的烧瓶药水几乎没有,但是我认为这个框架对于某些人来说似乎很有趣。


我决定写几篇关于基于Flask-Potion为Furfur库创建控制系统的文章,而不是简单地阅读有关该框架的文章。


该系统应该能够执行以下操作:


  • 存储有关书籍的信息(isbn,标题,描述,作者等)
  • 存储用户信息(读者和图书馆员)
  • 在图书馆发行一本书有一定的期限,可以延期

在此系统中,我们将使用以下工具:


  • PostgreSQL的
  • Flask,Flask-SQLAlchemy,Flask-JWT,Flask-Potion,Flask-Migrate

准备工作


骷髅


为了不自己收集项目的框架,我们将使用Valefor cookiecutter-template,该模板包括上述所有依赖项,甚至更多。


cookiecutter gh:lemegetonx/valefor 

该模板包括两个应用程序:


  1. 应用是最主要的。 它包含用于jwt的处理函数,用于药水资源和sqlalchemy模型的mixin类,以及带有应用程序配置的软件包。
  2. 用户-模板的开头,仅包含用户模型。

依赖安装


该模板使用诗歌来解决依赖关系,但是最近pip还支持pyproject.toml ,因此选择是您自己的。 我将利用诗歌。


 poetry install 

构型


为了简化配置,模板使用了西提里(sitri)库。 我们将需要稍微修改Sitri对象的设置。


  1. 更改app / config / provider.py 。 我们将用YamlCredentialProvider替换SystemCredentialProvider ,以便从credential.yaml文件获取第三方系统的授权数据,而不会将其添加到提交中:

 from sitri import Sitri from sitri.contrib.yaml import YamlConfigProvider, YamlCredentialProvider configuration = Sitri( config_provider=YamlConfigProvider(yaml_path="./config.yaml"), credential_provider=YamlCredentialProvider(yaml_path="./credential.yaml"), ) 

简而言之,PS可以更轻松地阅读文档中实际发生的事情,简而言之,现在我们决定要从哪里获取用于配置和授权的数据。


  1. 由于我们实质上是使用相同的提供程序,因此最好用database.py中的点替换get_credential调用中键中的下划线。

 DB_NAME = configuration.get_credential("db.name", path_mode=True) DB_HOST = configuration.get_credential("db.host", path_mode=True) DB_PASSWORD = configuration.get_credential("db.user.password", path_mode=True) DB_PORT = configuration.get_credential("db.port", path_mode=True) DB_USER = configuration.get_credential("db.user.name", path_mode=True) 

因此, config.yaml文件已经在模板中,但是credential.yaml应该由您自己编写。 在现实生活中,必须将此类文件添加到.gitignore中,但是我会将credential.yaml模板添加到存储库中,以便任何进入该项目的人都可以理解其结构。


基本credential.yaml


 db: name: furfur_db host: localhost port: 5432 user: password: passwd name: admin 

资料库


我们准备工作的下一步是部署DBMS,在本例中为PostgreSQL。 为了方便起见,我将创建一个stack.yaml文件,其中将用所需的数据描述postgres容器的启动。


 version: '3.1' services: db: image: postgres restart: always environment: POSTGRES_PASSWORD: passwd POSTGRES_USER: admin POSTGRES_DB: furfur_db ports: - 5432:5432 

如前所述,valefor模板包括JWT(处理程序)正常工作所必需的基本用户模型,因此准备数据库的最后一步是迁移(创建用户表)。


作为项目的根,我们执行以下命令:


 export FLASK_APP=furfur.app flask db init flask db migrate flask db upgrade 

有了数据库的准备以及我们系统的一般基础,一切都完成了。


接下来是什么?


在下一部分中,我们将讨论如何组织一个简单的角色系统和JWT身份验证。


项目资源库: https : //github.com/Egnod/furfur
此部分中说明的所有内容: https : //github.com/Egnod/furfur/releases/tag/0.0.2

Source: https://habr.com/ru/post/zh-CN472018/


All Articles