2020-05-27--flask01--flask基础01

2020-05-28  本文已影响0人  program_white

flask框架概述

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

Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。它主要面向需求简单的小应用。

Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验证等。Flask没有默认使用的数据库,你可以选择MySQL,也可以用NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块) ,模板引擎则使用 Jinja2 。
可以说Flask框架的核心就是Werkzeug和Jinja2。

Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。

Flask的Github地址:https://github.com/pallets/flask
Flask中文文档地址:http://docs.jinkan.org/docs/flask/

创建虚拟环境

与Django一样,flask也是可以在虚拟环境下进行创建的(这样的好处就是当项目的python版本不同时可以同时使用)

因为在之前的django中已经在该python版本(3.7.7)安装了虚拟环境以及管理包,也就是:

pip install virtualenv
pip install virtualenvwrapper-win

所以直接创建虚拟环境即可:

mkvirtualenv -p python3 py_flask
或
mkvirtualenv flask_vir1   #在python下创建虚拟环境
workon flask_vir1       #进入虚拟环境
pip install flask      安装flask

deactivate (虚拟环境名)         #退出当前的虚拟环境

在cmd:


pycharm创建项目

在pycharm专业版中可以直接创建flask项目,并且省略大部分的配置。
但是当使用pycharm社区版时,只能创建pure python项目。

在这里使用pycharm创建pure python项目搭建flask项目:
打开pycharm,创建pure python项目,选择已有的虚拟环境(刚在创建的虚拟环境):



点击create

HelloWorld

创建成功后,就是一个空项目,什么都没有。
如果使用pycharm专业版创建flask项目,那么会有好几个文件以及文件夹。
在项目下创建python文件---HelloWorld.py
要使用flask,就首先要导入flask框架中的Flask模块。
HelloWorld.py:

from flask import Flask

#Flask接受一个参数__name__,他会指向程序所在的包
app = Flask(__name__)

#路由和函数
@app.route('/')
def index():
    return '头像真帅'

#main函数
if __name__ == '__main__':
    app.run()

到这里就可以运行了:


(___name____)详解

main函数:

if __name__ == '__main__':
类似c或者Java中的mian函数,--程序的入口文件

test1.py:

def test_func():
    print(__name__)


def test1_func(name):
    print(type(name), name)

test_func()       #__main__
test1_func(__name__)        #<class 'str'> __main__

#在当前模块下运行,在test_func函数中打印__name__,这个__name__就是当前文件的__name__,所以打印__main__
#在test1_func函数中,传入参数__name__,也是但当前文件的__name__,所以还是打印__main__

name.py:

# __name__是类属性,也就是静态属性

from test1 import test1_func,test_func

'''
在当前模块运行时,__name__ 为__main__
使用import导入时, __name__  为  所在的模块的文件名(去掉.py)
'''

test_func()     #test1
test1_func(__name__)     #<class 'str'> __main__

#import方式使用,test_func()打印的__name__,是test1文件下的__name__,所以打印test1。
#test1_func()中,参数传递的是当前模块的__name__,所以打印__main__。

到这里就知道了flask中

app = Flask(__name__)
和
if __name__ == '__main__':
    app.run()
#给Flask传递的参数__name__是当前模块的__name__,
#那么__name__就是__main__,那么程序自然就运行到app.run()了。

路由的使用

在flask中也有类似于django的url路由,但是比django的简单很多,直接在相应的视图函数上加上一个装饰器即可:

#装饰器的作用就是讲路由映射到相应的视图函数上
@app.route('/')
def index():
    return '头像真帅'

终端(Terminal)的使用

在flask中要进入python shell:

flask shell

但是前提是项目中必须有有app.py文件,并且要在app.py中写最基本的组成部分。


项目资源文件的配置

在Flask类中有许多的初始化参数:

'''
static_url_path:静态访问路径(可不传,默认为static)

static_folder:静态文件夹(可不传,默认为static)

template_folder:模板访问路径(可不传,默认为templates)

'''

static_url_path的设置:

也就是说flask框架默认总项目下的static文件静态文件目录(static_folder),templates为 模板目录(template_folder)。以及前端访问静态资源时的url根路径(static_url_path)。
实例:
在项目中新建文件夹--static文件夹,在文件夹中新建index.html,然后运行项目:
在url中访问:

127.0.0.1:5000/static/index.html

这就是因为static_url_path默认为static,所以可以访问到。

程序加载配置

在使用web框架时通常要配置很多的配置项,在flask中常用的有两种方式进行加载配置

1.从配置对象中加载(常用)

也就是通过对象进行配置,那么一定要创建类
在app.py中,创建了app实例后,进行编写配置类:

from flask import Flask

#Flask接受一个参数__name__,他会指向程序所在的包
app = Flask(__name__,static_folder='statics')

#1. 配置对象,里边定义需要给APP添加的一系列配置
class Config(object):
    DEBUG = True    #在修改代码之后直接保存,会自动重启服务器

# 程序加载配置
#1.从配置对象中加载,把类名传给参数
app.config.from_object(Config)

#装饰器的作用就是讲路由映射到相应的视图函数上
@app.route('/')
def index():
    return '头像真帅'

#main函数
if __name__ == '__main__':
    app.run()

添加的DEBUG=True,在修改代码之后直接保存,会自动重启服务器,不需要像django重启服务器,还可以设置数据库等配置。
运行:



修改index函数的返回值:



直接运行:

2.配置文件中加载

顾名思义:就是创建一个文件,用于写一些配置项。
使用:
在项目下新建文件config.ini,在该文件中写:

#在此文件添加一些配置,一行一个
DEBUG = True

然后在app.py中使用:

#2.配置文件中加载,把文件名传进去
app.config.from_pyfile('config.ini')

再次运行上一步中的结果,也是可以的。

3.从环境变量中加载(不常用)

app.run(参数)
app.run(port=8000,debug=True)       #port:指定端口号,debug :自动保存,并重启服务

postman

Postman是chrome的一款插件,也可以下载app使用,用于做接口请求测试,无论是前端,后台还是测试人员,都可以用postman来测试接口,用起来非常方便。
就是模拟像后端服务器url发送请求,测试请求是否正常的。



模拟项向

[http://127.0.0.1:5001/](http://127.0.0.1:5001/)

发送请求:



上边的是请求方没有进行传参,当进行web开发时,要对后端不断地传递参数也就是位置参数。

有参方式

在app.py中编写服务器代码:

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

使用postman进行测试:


上一篇下一篇

猜你喜欢

热点阅读