初始flask

初始Flask

一、虚拟环境

在学习fladk前先了解一下虚拟环境

1.什么是虚拟环境

虚拟环境是隔离的Python解释器环境, 是一个独立的python开发环境。
这样做的好处是可以为每一个项目创建独立的Python环境,使用虚拟环境可以保持全局
Python环境的干净,避免包和版本的混乱,并且方便区分和记录每个项目的依赖。

2.如何创建虚拟环境
  • 第一步: 安装virtualenv

    在windows的开发环境安装过程, 使用virtualenv

    pip install virtualenvwrapper-win

  • 第二步: 创建虚拟环境

    mkvirtualenv flask_01_env

3.virtualenv常用命令
1.切换到指定环境: workon flask_01_env
2.退出虚拟环境: deactivate
3.删除指定的虚拟环境: rmvirtualenv flask_01env
4.列出所有虚拟环境: lsvirtualenv
5.进入到虚拟环境目录: cdvirtualenv
6.在虚拟环境中创建flask: pip install flask
4.创建virtualenv虚拟环境环境变量

在这里插入图片描述

ps: 配置virtualevn在安装virtualevn-win后,这样虚拟环境就安装在你所指定的环境路径下
在这里插入图片描述

二、创建一个最简单的Flask程序

  • 第一步:打开pycharm(专业版)新建一个项目

  • 第二步:使用pycharm新建flask项目选项
    在这里插入图片描述

三、解读Flask程序

3.1目录说明
1.static文件夹”用于存放各种静态文件css、js、图片等等
2."templates文件夹"用于存放html模板文件
3.“app.py"为我们的主文件,启动项目需要启动该文件
ps: 注意!app.py文件名字我们可以自由命名, 但出了flask.py这种和Flask库相冲突的名字
3.2代码说明

app文件主代码

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()
  • 第一部分
from flask import Flask
 
app = Flask(__name__)

导入安装好的flask包,通过flask包导入Flask类, Flask类即为Flask的核心, 实例化这个Flask类得到一个实例化对象app
name 类中特殊参数, Python会根据所处的模块来赋予__name__变量相应的值, 对于我们的程序来说, 这个值为app

  • 第二部分
@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route(‘/’)是用来匹配url,在flask当中是以装饰器来实现的,装饰应用的是第一部分当中实例化flask类出来的对象
hello_world函数为视图函数,如果匹配到了路径会触发视图函数并直接, 通过return返回具体数据给前端或者移动端

  • 第三部分
if __name__ == '__main__':
    app.run()   

app.run()实现flask程序在开发环境下运行起来, 并且默认ip和短时是127.0.0.1:5000
查看app.run源码,在内部定义了幕刃的ip和端口,并且调用了werkzeug.serving,此方法为我们创建
一个开发服务器(由依赖包WerKeug提供)。在这里插入图片描述

3.3WerKeug简介

WerKeug其实就是WSGI工具包, 是web框架的底层库, werkzeug不是web服务器, 也不是web框架。
在werkzeug中封装了许多web框架所需东西, 比如:Request, Response等等。

示例代码:

from werkzeug.wrappers import Request, Response


@Request.application
def hello_work(request):
    return Response('Hello World')


if __name__ == '__main__':
    from werkzeug.serving import run_simple

    run_simple('localhost', 4000, hello_work)

在这里插入图片描述

这里代码与app.py代码相似, flask就是依赖于werkzeug模块, 有werkzeug模块来实现socket服务端的工
hello_work需要使用括号括起来才会运行, 在flask中app.run()也会调用run_simple(host,port,self, **options)
把上面代hello_work替换成self也就是app,app()会自动触发Flask类中的__call__方法。
所以flask陈旭的入口就是__call__方法, 而__call__方法返回self.wsgi_app(environ, start_response)
这样来看整个程序是运行在self.wsgi_app(environ, start_response)中

3.4项目的运行

运行项目见下图
在这里插入图片描述

运行后访问
在这里插入图片描述

3.5Debug模式

Debug模式用来做什么
1.flask代码如果出现异常, 我们在浏览中不会提示具体信息,开始debug模式后把错误信息发送到浏览器上
2.flask代码如果被修改了, 必须要重启项目修改的代码才会有小, 开启debug模式后, 只需要保存项目中的文件,flask会自动帮我重现

  • 示例代码
from flask import Flask

app = Flask(__name__)


@app.route('/')
def get_list_num():
    list_num = [1, 2, 3, 4]
    print(list_num[4])

    return "获取不到呀"


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

未开始debug访问
在这里插入图片描述

开启debug后访问
在这里插入图片描述

  • 使用pycharm开启debug失败可以进行一下操作

1.点击 左上角菜单栏的run按钮,并点击 edit configuration
在这里插入图片描述

2.FLSAK_DEBUG 后面的勾选上
在这里插入图片描述

3.6开启debug的方式
  • 第一种
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run(debug=True)
  • 第二种
from flask import Flask

app = Flask(__name__)

app.debug = True


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()
  • 第三种
from flask import Flask

app = Flask(__name__)

app.config.update(debug=True)


@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()
  • 第四种
    需要在app.py所在的目录下,再创建一个config.py, 来配置flask项目。
DEBUG = True
import config

from flask import Flask

app = Flask(__name__)

app.config.from_object(config)


@app.route('/')
def get_list_num():
    list_num = [1, 2, 3, 4]
    print(list_num[5])

    return "获取不到呀"


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

app = Flask(__name__)

app.config.from_object(config)


@app.route('/')
def get_list_num():
    list_num = [1, 2, 3, 4]
    print(list_num[5])

    return "获取不到呀"


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值