Flask:第一个Flask项目
在上一篇文章:Flask:项目的准备工作中,我写了flask项目的准备工作,不清楚创建flask项目需要做哪些准备的朋友可以点击链接看看
1、最简单的Flask项目
代码:
from flask import Flask # 创建一个应用
app = Flask(__name__) @app.route("/")
def index():
return "hello flask" if __name__ == '__main__':
app.run(host="127.0.0.1", port=5000, debug=True)
在pycharm中直接运行就可以让项目跑起来了,在浏览器输入127.0.0.1:5000查看结果:

2、代码解析
(1)第一部分
from flask import Flask
导包代码就不用多做解释了吧,这一句代码的作用就是从flask框架中导入一个名为Flask的类
(2)第二部分
# 创建一个应用
app = Flask(__name__)
这里就是实例化一个名为app的Flask对象,并将变量__name__作为参数传入到对象里面,对变量__name__有疑问的朋友可以看下这篇博客:python:__name__的使用
(3)第三部分
@app.route("/")
def index():
return "hello flask"
上面的@app.route("/")是一个装饰器,下面的index()是一个视图函数,在pycharm按住ctrl键点击route查看源代码:
def route(self, rule, **options):
def decorator(f):
endpoint = options.pop("endpoint", None)
self.add_url_rule(rule, endpoint, f, **options)
return f return decorator
使用这个装饰器将把"/"传给rule参数,将函数index()传给装饰器内嵌函数的f参数;最后,很明显,这里没有给**options传参,因此options(数据类型为字典)为空
内嵌函数的第一句:endpoint = options.pop("endpoint", None),使用pop方法从字典中将key为"endpoint"的value取出来给endpoint变量,若这个key不存在则将None传给变量endpoint;很明显,这里的options为空,因此endpoint的值为None
内嵌函数的第二句:self.add_url_rule(rule, endpoint, f, **options),将变量rule("/")、endpoint(None)、f(视图函数index)、**options(为空)作为参数传给add_url_rule方法
限于篇幅,这里就不继续深究add_url_rule()方法的作用了,有兴趣的朋友可以通过pycharm去查看它的源代码
(4)第四部分
if __name__ == '__main__':
app.run(host="127.0.0.1", port=5000, debug=True)
这里执行app的run()方法,并传入几个参数,查看下run()的源代码(这里不展示完整源代码,只提取部分先进行分析):
def run(self, host=None, port=None, debug=None, load_dotenv=True, **options):
if debug is not None:
self.debug = bool(debug) _host = "127.0.0.1"
_port = 5000
host = host or sn_host or _host
port = int(next((p for p in (port, sn_port) if p is not None), _port))
这段代码还是比较容易理解的,先是将self.debug属性设置为run方法传进来的debug参数的值,然后在对host和port进行赋值。可以看出,默认情况下,host的值为127.0.0.1,port的值为5000
注意:上面这段代码并非run()方法全部的源代码,源代码比较长,这里不过多展示,有兴趣的朋友可以自己去看,查看源代码对学习者的python功底有一定要求
Flask:第一个Flask项目的更多相关文章
- Python框架学习之用Flask创建一个简单项目
在前面一篇讲了如何创建一个虚拟环境,今天这一篇就来说说如何创建一个简单的Flask项目.关于Flask的具体介绍就不详细叙述了,我们只要知道它非常简洁.灵活和扩展性强就够了.它不像Django那样集成 ...
- 1、Flask实战第1天:第一个Flask程序
Flask是流行的python web框架...(* ̄︶ ̄) 零基础到企业级论坛实战,人生苦短,我用python,开启FLask之旅吧... 安装开发环境 下载Python win版安装包 双击运行, ...
- 第一个flask程序
flask简介: flask是一款非常流行的Python Web框架,出生于2010年,作者是Armin Ronacher,本来这个项目只是作者在愚人节的一个玩笑,后来由于非常受欢迎,进而成为一个正 ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...
- [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)
oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...
- 创建第一个flask项目
安装flask模块 pip install flask或conda install flask 创建一个run.py文件,文件内容如下: from flask import Flask app = F ...
- 【Centos】【Python】【Flask】阿里云上部署一个 flask 项目
1. 安装 python3 和 pip3 参考:http://www.cnblogs.com/mqxs/p/8692870.html 2.安装 lnmpa 集成开发环境 参考:http://www.c ...
- Flask 使用pycharm 创建项目,一个简单的web 搭建
1:新建项目后 2:Flask web 项目重要的就是app 所有每个都需要app app=Flask(__name__) 3:Flask 的路径是有app.route('path')装饰决定, ...
- 从零开始用 Flask 搭建一个网站(一)
前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ...
随机推荐
- IT爱心求助站
最近发生的一些事情,让我对自己的专业有了另外一层认识. 小尹同学,你是做软件的是吗?能否帮我看一下我的电脑问题? 老同学,我的电脑安装一个软件这么都装不上,能否帮我看一下呢? 邻居你好,我的手机怎么没 ...
- Flask中的flash
一.简单的使用 - 必须要设置秘钥因为flash是基于session -设置:flash('aaa') -取值:get_flashed_message() #从源码我们可以看出get_flashed_ ...
- 帝国cms网站管理系统之安全设置最优化分享
首先我们来认识一下帝国CMS安全认证特性:帝国登录四重安全验证:第一重:密码双重MD5加密,密码不可破解,假如数据库被下载,也无法获取真实密码.第二重:后台目录自定义,假如对方知道密码也找不到登录后台 ...
- 爬虫1:html页面+beautifulsoap模块+get方式+demo
前言:最近公司要求编写一个爬虫,需要完善后续金融项目的数据,由于工作隐私,就不付被爬的网址url了,下面总结下spider的工作原理. 语言:python:工具:jupyter: 概要:说到爬虫 ...
- caffe中batch norm源码阅读
1. batch norm 输入batch norm层的数据为[N, C, H, W], 该层计算得到均值为C个,方差为C个,输出数据为[N, C, H, W]. <1> 形象点说,均值的 ...
- 特征真的越多越好吗?从特征工程角度看“garbage in,garbage out”
1. 从朴素贝叶斯在医疗诊断中的迷思说起 这个模型最早被应用于医疗诊断,其中,类变量的不同值用于表示患者可能患的不同疾病.证据变量用于表示不同症状.化验结果等.在简单的疾病诊断上,朴素贝叶斯模型确实发 ...
- opencv::点多边形测试
点多边形测试 测试一个点是否在给定的多边形内部,边缘或者外部 double pointPolygonTest( InputArray contour, // 输入的轮廓 Point2f pt, // ...
- 使用mongoose-paginate-v2查询缓慢问题
场景 mongoose-paginate-v2 是一个mongoose上的分页插件,我也用过很多次了,但是最近在创建项目遇到了问题. 老代码中不使用分页插件进行查询,然后自己使用中间件进行分页 old ...
- php有orm吗
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中.本质上就是将数据从一种形式转换到另外一种形式. ORM提供了所有SQL语句的生成,代码人员远离了数据库概念.从 ...
- 手动部署 Docker+Grafana+Prometheus系统监控之Redis
监控规划图 使用Docker 创建两台Redis docker run -d --name redis1 redis docker run -d --name redis2 redis 查看redis ...