Flask-Grundlegende Inhalte-Ein

O、引言

该学习笔记为学习Django后的笔记,因此省略了很多操作步骤以及操作相关的web知识介绍,仅着重介绍Flask相关的内容,且存在和Django的部分对照学习过程,建议食用方式为学习完Django后再进行学习Flask


I、前言

Flask为Python属下的web框架之一,具有比Django更大的灵活性,而由于建立时间较晚,因此相较于Django在实际应用上略逊。但是Flask的强大在于其灵活性以及强可扩展性,这是Django所望尘莫及的。作为一个微框架,Flask的体量也相对于Django小,其在大型网站的应用暂时没有实际示例,而小型app则有很多,因此学好flask框架有利于接下来学习数据挖掘、TensorFlow、PyTorch等工具后将其落地。


II、创建一个Flask项目

首先我们和Django一样,创建一个虚拟环境

mkvirtualenv -p python3 py_flask
workon py_flask
pip install flask

然后打开pycharm,我们以两种方式创建flask项目
1、我们创建一个纯净的python项目,然后新建一个python文件并导入flask,建设一个基础的flask-app并运行(默认端口为5000)

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return "芜湖"


if __name__ == '__main__':
    app.run()

2、我们直接用pycharm自带的功能创建Flask 项目(可自行尝试,不在说明)


III、基础介绍

我们来介绍一下代码内容

# 通过装饰器定位路由
@app.route('/')
# 该路径下应用的函数
def index():
    return "芜湖"
# 程序的入口文件
if __name__ == '__main__':
    app.run()
# 指向文件所在的包
# __name__ 为Python内的类属性
app = Flask(__name__, static_url_path=None, template_folder='templates', static_folder='static')
"""
static_url_path:静态访问路径(可不传,默认为static)
static_folder:静态文件夹(默认为static)
template_folder:模板访问路径(可不传,默认为templates)

我们可在Flask()内传字段,来设置访问路径
"""

IV、利用Manager进行运行

首先我们需要安装flask-script包
在app内导入,并改写一些内容

from flask import Flask
from flask_script import Manager, Server

app = Flask(__name__, static_url_path=None, template_folder='templates', static_folder='static')

manager = Manager(app)
manager.add_command("runserver", Server("localhost", port=5000))


@app.route('/')
def hello_world():
    return "芜湖"


if __name__ == '__main__':
    manager.run()

尝试运行一下,依旧正常运行

下面介绍一下该包:
(1)Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任务;使得脚本和系统分开;
(2)Flask Script和Flask本身的工作方式类似,只需定义和添加从命令行中被Manager实例调用的命令;
(3)flask_script的作用是可以通过命令行的形式来操作flask例如通过一个命令跑一个开发版本的服务器,设置数据库,定时任务等
(4)通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过python app.py runserver --host ip地址,告诉服务器在哪个网络接口监听来自客户端的连接。默认情况下,服务器只监听来自服务器所在计算机发起的连接,即localhost连接。


V、程序配置加载

主要存在以下三种方式:
1、从配置对象内加载
app.config.from_object()
2、从配置文件中加载
app.config.from_pyfile()
3、从环境变量中加载 \color{Red}{ //不常用,跳过}
app.config.from_envvar()

①例如:设置改配置 DEBUG = True 使得修改代码后自动保存并重启服务器

# 配置对象,需要给对象添加一些配置
class Config(object):
    DEBUG = True

# 从配置对象内加载
app.config.from_object(Config)

设置结束后重启应用即可生效
②创建文件 config.ini内输入

# 在此文件中添加配置
DEBUG = True;

回到app.py删除示例①中的配置语句,添加如下语句,重启服务亦可生效

# 从配置文件中加载
app.config.from_pyfile('config.ini')

VI、app.run()的参数设置

app.run()可以配置端口,以及是否开启调试模式
我们可以进入app下的run()方法看源代码

#  分为当前根地址,端口,debug模式,生产运行时加载部分文件
 def run(self, host=None, port=None, debug=None, load_dotenv=True, **options):
# 我们可以尝试修改,并运行后观察显示
app.run(host='localhost', port=5001, debug=True)

VII、一个接下来会用到的工具PostMan

用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一。
转自 ---作者:依北辰
链接:https://www.jianshu.com/p/97ba64888894

接下来的API我们都将使用PostMan测试
我们简单的使用一下PostMan如有兴趣可去依北辰的文章内详细学习

首先我们创建一个Collection 命名为Flask,然后点击如下图内的“+”


“+”

然后在app内编写一个带装饰器的函数

@app.route('/demo1')
def demo1():
    return "demo1"

在GET的输入框内输入http://127.0.0.1:5000/观察postman内的显示

同样的我们可以显示一个带有参数的路由
在app.py内编写

@app.route('/user/<user_id>')
def user_info(user_id):
    return 'hello{}'.format(user_id)

打开postman在GET输入框内输入http://127.0.0.1:5000/user/222,观察结果

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352