Flask项目学习(一)——sayHello

Flask项目学习(一)——sayHello本文详细介绍了学习 Flask 框架的过程 通过分析 sayHello 项目 了解了项目的启动 主要功能和代码结构

大家好,欢迎来到IT知识分享网。

最近在学习flask框架,最快的学习方式一方面是看官方文档。在看完官方文档给的示例项目后,还想再看一些初学的项目来熟悉此框架。因此,本系列博客只要是来记录自己学习flask框架所看的项目源代码。

本篇主要是对sayHello项目

1. 项目简介

项目github地址为

https://github.com/greyli/sayhello 

该项目主要有如下几个文件组成
在这里插入图片描述
根据README.md中的讲解,在安装好相关环境依赖后,通过如下方式启动项目

$ flask forge $ flask run * Running on http://127.0.0.1:5000/ 

使用浏览器打开页面后,是这样的效果:
在这里插入图片描述
此项目的功能逻辑较为简单,主要是发送消息,然后所有人都可以看到。

2.过程讲解

我们可以按照刚才执行的步骤来一步一步的阅读相关的代码。

2.1 forge方法

首先在启动之前,我们执行了一条命令

flask forge 

此命令看字面意思是,让flask框架去执行一个叫forge的方法,从源代码中,我们可以搜索下是否有个这个 forge 关键字的代码:
在这里插入图片描述
在commands.py文件中,确实有个叫forge的方法。通过阅读注释,可以知道这个方法的主要作用是虚拟出一些信息。而且有个count参数,代表要虚拟出具体多少条消息。对于具体的实现,则是通过一个叫Faker的对象,来生产出数据,然后根据count值来生成具体多少条信息:

 for i in range(count): message = Message( name=fake.name(), body=fake.sentence(), timestamp=fake.date_time_this_year() ) 

2.2 index方法

在我们在网页输入上对应的IP:PORT后,会跳转到主页。因此,我们可以查看主页的代码是如何实现的。在view.py中,可以找到对于路由为’/’对应的方法:
在这里插入图片描述
此方法包含了前端信息提交以及信息展示两个功能。
首先是判断是否有合规提交,若有合规提交,就将数据写入到数据库中并重新加载主页。对于数据的提交,在获取到前端传入的数据后,会执行一个叫flash的方法,此方法主要是给前端用户返回一条提示性的消息。此消息在渲染模板时,通过模板中的get_flashed_messages() 方法来的获取并渲染:
在这里插入图片描述
在加载主页前,会将message数据经过排序后,传入到模板中填充,并返回给前端:

 messages = Message.query.order_by(Message.timestamp.desc()).all() return render_template('index.html', form=form, messages=messages) 

3.入口讲解

在此项目中,入口为__init__.py文件
在这里插入图片描述
首先是定义了此app的名字为sayhello,并且从settings.py中加载了配置文件。然后通过根据加载配置文件的数据来初始化数据库,bootstrap等。
最后是将views, errors, commands都加载到程序中。

接下来,我们可以先看看配置文件里边都写了什么
在这里插入图片描述
首先是根据不同的平台,对于数据库前缀有所不同。然后是设置SECRET_KEY,以及数据库相关的配置。

4.其他讲解

由于此项目逻辑较为简单,刚才已经将此项目中主流程所运行的代码都说了一遍。但是还有一些代码并不在主流程中,我们可以单独拎出来说一下。

4.1 errors.py

errors中主要是定义了两个回调方法,在出现404,500时候,分别调用这两个方法。
在这里插入图片描述
我们可以试一下404的回调。在浏览器中输入ip:port,并且跟上一个没有在后端中声明的路径,就可以出现404
在这里插入图片描述

4.2 forms.py

forms里边主要是定义了一个结构体,是前端给后端发送提交信息的结构体。此结构体继承了FlaskForm,因此此结构体主要作用就是前后端传输数据时使用的。主要分成三个属性:姓名,内容,提交。
在这里插入图片描述

4.3 models.py

models里边主要是一个Message类,此类继承自db.Model。因此可以猜出此类主要作用是和存储数据库相关的。每条记录都会成为一个Message对象,并存入数据库中
在这里插入图片描述

5.收获

通过此项目,我主要学到了如下的技巧

5.1 flash

flash可以返回给用户一些交互的信息。比如登录账号时候不管是成功还是失败,都需要给用户一个提示。通过flash写的数据,在前端模板文件中可以使用get_flashed_messages()方法来获取到。我们可以做个验证。

在view.py下再写一个接口

@app.route('/flash',methods=['GET','POST']) def test(): flash('测试一下flash') return render_template('test.html') 

然后在templates里边新建一个test.html

<head>text</head> <body> { 
  {get_flashed_messages()}} </body> 

这样,这个接口就写完成了。然后通过访问 localhost:5000/flash就可以验证这个:
在这里插入图片描述

5.2 404,500等页面回调

flash可以使用 @app.errorhandler(状态码) 的注解来回调遇到对应状态码该调用哪个方法,如404,500等。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152916.html

(0)
上一篇 2025-03-06 21:15
下一篇 2025-03-06 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信