pycharm如何导入flask_flask简单介绍


我这里安装的python3.7的版本,flask 的版本是 1.1.2的版本,今天给大家简单展示下flask的强大功能。

  • 第一个程序就是我们的hello flask

我们安装Flask 时,它会在Python 解释器中创建一个flask 包,我们可以通过flask 包的构造文件导入所有开放的类和函数。我们先从flask 包导入Flask 类,这个类表示一个Flask 程序。

实例化这个类,就得到我们的程序实例app :

 from flask import Flask app = Flask (__name__) @app.route('/index')def index():    return "hello flask !!!"

其实你看到这里,应该也能猜到这个效果返回的展示是啥,没错,就是最牛逼 的 “hello flask !!!”

我们先来看看展示效果:

71213f7a0790b51533035b2fdd501299.png

hello flask

效果还是很真实,最简单的一个效果出来来。

我们安装F lask 时,它会在Python 解释器中创建一个flask 包,我们可以通过flask 包的构造文件导入所有开放的类和函数。我们先从flask 包导入Flask 类,这个类表示一个F lask 程序。

实例化这个类,就得到我们的程序实例app :

 from flask import Flask app = Flask (__name__)

传人Flask 类构造方法的第一个参数是模块或包的名称,我们应该使用特殊变量__name__

Python 会根据所处的模块来赋予_name_ 变量相应的值,对于我们的程序来说( app.py ) ,这个值为app 。除此之外,这也会帮助F la sk 在相应的文件夹里找到需要的资源,比如模板和静态文件。

  • 注册路由

在一个Web 应用里,客户端和服务器上的Flask 程序的交互可以简单概括为以下几步:

1 )用户在浏览器输入U RL 访问某个资源。

2) F l ask 接收用户请求并分析请求的URL 。

3 )为这个URL 找到对应的处理函数。

4 )执行函数并生成响应,返回给浏览器。

5 )浏览器接收并解析响应,将信息显示在页面中。

在上面这些步骤中,大部分都由Flask 完成,我们要做的只是建立处理请求的函数,并为其定义对应的URL 规则。只需为函数附加app .route()装饰器,并传人URL 规则作为参数,我们就可以让URL 与函数建立关联。这个过程我们称为注册路由( route ),路由负责管理URL 和函数之间的映射, 而这个函数则被称为视图函数( view function ) 。

在这个程序里, app.route()装饰器把根地址/和index()函数绑定起来,当用户访问这个U RL 时就会触发index ()函数。这个视图函数可以像其他普通函数一样执行任意操作,比如从数据库中获取信息,获取请求信息,对用户输入的数据进行计算和处理等。最后,视图函数返回的值将作为响应的主体, 一般来说,响应的主体就是呈现在浏览器窗口的HTML 页面。

在最小程序中,视图函数index () 返回一行问候:

@app.route ( '/index’ )def index() :    return '< h1>Hello , World!  '

虽然这个程序相当简单,但它却是大部分Flask 程序的基本模式。在复杂的程序中,我们会有许多个视图函数分别处理不同U RL 的请求,在视图函数中会完成更多的工作,井且返回包含各种链接、表单、图片的H TML 文件,而不仅仅是一行字符串。返回的页面中的链接又会指向其他U RL ,被单击后触发对应的视图函数,获得不同的返回值,从而显示不同的页面,这就是我们浏览网页时的体验。

  • 为视图绑定多个URL 一个视图函数可以绑定多个URL ,比如下面的代码把/hi 和/hello 都绑定到say h e llo () 函数上,这就会为say_hello 视图注册两个路由,用户访问这两个URL 均会触发say_hello()函数,获得相同的响应结果。
@app.route('/hi')@app.route('/say')def say_hello():return "

say hello |||

"

上面的代码,2个不同的url展示的效果都是一样的,截图如下:

e0bc6a0cc5f7db544cbaba111b781059.png
ed23a1068e52c6b31cb6bad0a47c905a.png

我们可以看到虽然我们访问的url 是不一样的,但是返回的效果都是一样的。

  • 动态URL

我们不仅可以为视图函数绑定多个URL ,还可以在URL 规则中添加变量部分,使用“<变量名>”的形式表示。Flask处理请求时会把变量传入视图函数,所以我们可以添加参数获取这个变量值。

下面代码中的视图函数article(),它的URL规则包含一个articleNumber变量。

@app.route('/topic/')def article(articleNumber):    return "

article's number is %s

" % articleNumber@app.route('/topic/',defaults={'articleNumber':'123'})def article1(articleNumber): return "

article's number is % s

" % articleNumber

因为URL 中可以包含变量,所以我们将传人app.route()的字符串称为URL规则,而不是URL 。Flask 会解析请求并把请求的URL与视图函数的URL 规则进行匹配。比如,这个article视图的URL 规则为/topic/, 那么类似/topic/foo 、/topic/bar 的请求都会触发这个视图函数。

虽然路由中的URL 规则和视图函数名称都包含相同的部分,但是这并不是必须的,你可以自由修改URL 规则和视图函数名称。

这个视图返回的响应会随着请求URL 中的articleNumber变量而变化。

当URL 规则中包含变量时,如果用户访问的URL 中没有添加变量,比如/topic/ ,那么F l ask 在匹配失败后会返回一个404 错误响应。一个很常见的行为是在app.route()装饰器里使用defaults 参数设置URL 变量的默认值, 这个参数接收字典作为输入,存储URL 变量和默认值的映射。在下面的代码中,我们为article视图新添加了一个app.route()装饰器,为/topic articleNumber 值:

@app.route('/topic/')def article(articleNumber):    return "

article's number is %s

" % articleNumber@app.route('/topic/',defaults={'articleNumber':'123'})def article1(articleNumber): return "

article's number is % s

" % articleNumber

这时如果用户访问/topic , articleNumber 会使用默认值Programmer ,视图函数返回

article's number is 。

上面的用法实际效果等同于:

@app.route('/topic/')@app.route('/topic/',defaults={'articleNumber':'123'})def article(articleNumber):    return "

article's number is %s

" % articleNumber

下面的截图是展示的测试效果,我们可以看到如果没有输入参数,就会返回默认的值

下面2个URL 返回的是输入的参数的值。

90ac855e8bd5f3a9bfbd0603b03aea99.png
4c3520f3917b27ee5825e77d3ce9cf0c.png
52ceeac4d64e293b972932f459164aff.png
  • 如何启动我们的服务器

Flask 内置了一个简单的开发服务器( 由依赖包Werkzeug 提供),足够在开发和测试阶段使用。

Flask 通过依赖包Click 内置了一个CLI ( Command Line Interface , 命令行交互界面)系统。当我们安装Flask 后, 会自动添加一个flask 命令脚本,我们可以通过flask 命令执行内置命令、扩展提供的命令或是我们自己定义的命令。其中, flask run 命令用来启动内置的开发服务器

因为我们的程序主模块命名为app.py ,所以flask run 命令会自动在其中寻找程序实例。如果你的程序主模块是其他名称,比如hello.py,那么需要设置环境变量FLASK_APP ,将包含程序实例的模块名赋值给这个变量。否则会报错,报错截图如下:

1ce26c4f0062a9e7c523f8b4f49a37f1.png

flask run启动有问题

需要运行如下命令赋值,才能用flask run 来运行我们的开发服务器

 Linux 或mac OS 系统使用export 命令: $ export FLASK APP=hello在Windows 系统中使用se t 命令:  > set FLASK APP=hello

这样我们已经可以正常的跑起来来,flask默认的端口是5000,我们可以修改参数port,来改变端口号

08216b4122ae0c2d8b905c8780a816df.png
9b1afb92de1d4dec19068596c0e8db60.png

flask run 还有很多参数可以配合启动项,大家可以自己参考下。

1f90ddb5c0821cf8e7121826c33f1e10.png

第一天简单介绍就到这里来,未完待续。。。

下面贴上第一天完整的代码:

#!/usr/bin/env python3from flask import Flaskapp=Flask(__name__)@app.route('/index')def index():    return "

hello flask !!!

"@app.route('/hi')@app.route('/say')def say_hello(): return "

say hello |||

"# @app.route('/topic/')# def article(articleNumber):# return "

article's number is %s

" % articleNumber## @app.route('/topic/',defaults={'articleNumber':'123'})# def article1(articleNumber):# return "

article's number is % s

" % articleNumber@app.route('/topic/')@app.route('/topic/',defaults={'articleNumber':'123'})def article(articleNumber): return "

article's number is %s

" % articleNumber
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值