美文网首页
2020-05-27--flask01--flask基础01

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

作者: program_white | 来源:发表于2020-05-28 22:27 被阅读0次
  • flask框架概述
  • 虚拟环境的创建
  • pycharm创建flask项目
  • HelloWorld运行
  • (___name____)详解
  • 路由的使用
  • 终端(Terminal)的使用
  • 项目资源文件的配置
  • 程序加载配置
  • postman的使用

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的设置:

  • 如果static_folder未被指定(也就是默认值static),那么static_url_path取为static
  • 如果static_folder被指定了,那么static_url_path等于static_folder的最后一级文件夹名称。
  • 手动指定static_url_path时,如果static_url_path不为空串,url的路径必须以/开头,如/static。
  • 手动指定static_url_path时,如果static_url_path为空串,url路径不必以/开头,否则相当于static_url_path=None的情况,也就是使用static_folder的目录名字。
  • static_url_path是前端访问资源文件的前缀目录。默认是/static,就是前端必须这样访问:<img src="/static/img/mylogo.jpg" />
    我们改成 ''",就可以这样访问了:<img src="/img/mylogo.jpg" />。就达到前端从根目录访问的目的了。
  • static_folder:
    static_folder表示静态文件所在路径,默认为总项目下的static文件夹
    后端存储资源文件的目录。默认是/static,就是指明你后端的资源文件,是放在<your project>/static/目录下,一般不需要改动。

也就是说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 :自动保存,并重启服务
  • 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进行测试:


相关文章

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

    flask框架概述 虚拟环境的创建 pycharm创建flask项目 HelloWorld运行 (___name_...

  • 2019年大数据零基础到就业-T洲学院

    【课程目录】 ├─01-Linux基础 │└─01-Linux基础 │ │vmwarepro12.rar │ ...

  • java多线程相关

    (一) 基础篇 01.Java多线程系列--“基础篇”01之 基本概念 02.Java多线程系列--“基础篇”02...

  • Java 基础

    Java 基础01Java开发入门 Java 基础02Java编程基础 Java 基础03面向对象 Java 基础...

  • day02 Python基础

    目录 01 Python基础 02 Python基础语法 03 变量 04 运算符 05 进制转换 01-heol...

  • 01基础

    immutable意义 它是提供了一种不可改变的数据结构 使用场景 js中对象都是参考类型,当a,b都指向某个对象...

  • 基础01

    storyboard文件的认识 用来描述软件界面 默认情况下,程序一启动就会加载Main.storyboard 加...

  • 01 基础

    基础知识点:7天学习php 1.' '不可解析变量," "可以解析变量; 2.整型、浮点型、布尔型、字符串; 3....

  • vue基础-01-重点

    vue 基础-day01-重点 01-基础-vue 是什么 vue前端js框架 库: API需要自己调用 框架: ...

  • 彭壮:千川基础实操计划详解18条(极速推广)

    01 计划组合的分类: 基础定向+行为兴趣 基础定向+抖音达人 基础定向+达人分类 基础定向+人群包 基础定向+行...

网友评论

      本文标题:2020-05-27--flask01--flask基础01

      本文链接:https://www.haomeiwen.com/subject/urrgahtx.html