Flask搭建虚拟环境并运行第一个flask程序

 更新时间:2021年04月20日 10:22:28   作者:Gorit  
这篇文章主要介绍了Flask搭建虚拟环境并运行第一个flask程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

以下操作均在 windows 环境下进行,我使用的 Python 版本是 3.7.1

一、搭建虚拟环境

1.1 使用 pipenv 搭建虚拟环境

当然也可以使用 virtualenv,但是这个虚拟环境经常安装不上,这里给大家介绍另一种虚拟环境的安装方式,我使用的 cmd 命令进行下列的操作

安装pipenv: pip install pipenv

创建项目运行的目录: mkdir app

进入该目录: cd app

安装环境依赖:pipenv install

进入虚拟环境:pipenv shell

在这里插入图片描述

6. 查看当前的 python 包:pip list

在这里插入图片描述

1.2 为虚拟环境安装其他的包

我们要使用 flask,所以使用如下命令即可:pipenv install flask,如果有其他需要,比如安装 requests, pumysql 等等命令都是和上面一样的

1.3 pipenv 命令一览表

命令 功能
pipenv install 初始化虚拟环境
pipennv 进入虚拟环境
pipenv install xxx (uninstall xxx) 为虚拟环境安装(删除)包
exit 退出虚拟环境
pipenv graph 查看包之间的依赖关系

二、在开发工具中设置虚拟环境

我使用的开发工具是 Pycharm 社区版的

2.1 查找 虚拟环境的路径

这里我们要输入这个命令查看 pipenv 的路径:pipenv --venv , 我的是安装在了 如下的位置

在这里插入图片描述 

2.2 在开发工具中配置虚拟环境

然后打开 pycharm 的设置中,找到 setting

在这里插入图片描述

然后找到 Python 解释器,添加虚拟环境,找到我们刚才查到的路径,添加即可

在这里插入图片描述 

三、第一个 flask 程序

3.1 运行第一个 flask 应用程序

我们只需要三句话就可以实现一个最简单的 flask 应用程序

#!/usr/bin/python
# -*- coding: utf-8 -*-
#file: app.py
#@author: Gorit
#@contact: gorit@qq.com
#@time: 2020/2/26 9:08

from flask import Flask

app = Flask(__name__) # 实例化 flask , __name__ 会作为 app 核心的一个标识,这个可以为任意的字符串

@app.route('/hello') # 使用路由,给 hello 函数定义一个路由,然后游览器通过http 请求得到相对应的数据
def hello(): # hello 是视图函数,也是 mvc 中的 controller
    return "Hello World"

app.run()

然后我们在虚拟环境中,输入 python app.py ,就可以在 http://127.0.0.1:5000 中启动我们的 flask 应用程序,但是打开之后发现啥也没有,这是因为,我们在程序中设置了路由,所以我们要把路径改成 http://127.0.0.1:5000/hello ,然后就可以在网页找那个看到 hello world 字符串了

3.2 flask 中路由的重定向机制

还是复用上面的一段代码,我们做一个小小的变动

from flask import Flask
app = Flask(__name__) 

@app.route('/hello/') # 我们在路由这里多加入一个斜杠
def hello(): 
    return "Hello World"

app.run()

然后我们正常运行

在这里插入图片描述

我们把路径改一下: 127.0.0.1:5000/hello ,然后回车我们发现页面跳动了一下,就变成了正常的状态

在这里插入图片描述

我们打开 F12 开发者工具,找到 network 选项,我们发现这里产生了两个网络请求

在这里插入图片描述

经过查阅资料,也就是说,我们输入 /hello 会被 Python flask 做永久重定向处理

3.3 另一种路由注册的方式

我们使用 app.route("/hello"),作为访问的界面,但是我们使用 ctrl + 鼠标左键点击 route,可以查看它的源码,route 是作为装饰器被使用的

在这里插入图片描述

重点在下面的实现方式,路由的核心实际上是通过设置 add_url_rule(..) 路由规则实现的

在这里插入图片描述

所以我们也可以使用另一种方法,设置路由,使用起来也比较容易,第一个参数,设置路径,第二参数,指定视图函数,也就是 hello()

from flask import Flask
app = Flask(__name__)

# @app.route('/hello/')
def hello(): 
    return "Hello World"

app.add_url_rule('/hello',view_func=hello)

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

第二种使用的情况一般在基于类的视图使用比较多,也就是我们使用 面向对象的方式编写 flask 应用程序

3.4 flask 改变运行方式

app.run() 中有三个参数,我们一起改变

  • 开启 debug 模式 (这样flask 就会自动重启服务器了,不用我们手动重启服务器)
  • 指定启动端口 (默认端口是 5000,我们可以手动修改端口了)
  • 改变主机 (默认是 127.0.0.1,如果要挂在服务器上,可以把 host 改成 0.0.0.0,然后关闭防火墙,这样外网就可以看到了)
from flask import Flask
app = Flask(__name__)

@app.route('/hello')
def hello(): 
    return "Hello World"

if __name__ == '__main__': 
    app.run(host="localhost", debug=True,port=9999)

然后运行 http://localhost:9999/hello

然后就可以看到内容了

3.5 我们想看到 html 标签要怎么办呢?

我们尝试一下把 hello 视图函数中,返回的内容改成 html 标签试试看看有效果吗?

from flask import Flask
app = Flask(__name__)

@app.route('/hello/')
def hello(): 
    return "<html></html>"

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

实际上它什么都不会显示,这是为什么呢?这是一个请求头的问题。

Flask 请求头的内容包括

  • status code
  • content-type http headers

因为请求头中 content-type 已经指定了值,所以 html 标签无法像 字符串那样显示,这个时候我们就需要改变请求头的信息,我们可以这么做

from flask import Flask,make_response
app = Flask(__name__)

@app.route('/hello')
def hello():
    # 手动创建 response
    headers = {
        "content-type": "text/html",  # plain 当成普通的字符串,plain 改后才能 html 就可以正常的显示 html 标签的内容
    }
    return '<html><body><font color="red">你好,世界</font></body></html>', 200, headers

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

ok 这样就能正常显示我们的 html 标签中的内容,但是字体不对,这就是编码格式的问题了

在这里插入图片描述

其他类型的

  • content-type: “text/plain” 将返回的数据当成字符串
  • “content-type”:“application/json” 使用 api, 指定返回 json 格式的数据

 3.6 重定向的妙用

我们可以在 headers 中加入 location 参数,可以是用户加载某指定路径的时候,自动跳转到其他的页面

from flask import Flask,make_response
app = Flask(__name__)
app.config.from_object('config')

@app.route('/hello')
def hello():
    headers = {
        "content-type": "text/plain",  # plain 当成普通的字符串
        # "content-type":"application/json"  使用 api, 指定返回 json 格式的数据
        "location": "https://www.bing.com"
    }
    # 同样实现 跳转效果,控制响应状态码
    return '<html></html>', 301, headers

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

到此这篇关于Flask搭建虚拟环境并运行第一个flask程序的文章就介绍到这了,更多相关Flask搭建环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • jupyter notebook清除输出方式

    jupyter notebook清除输出方式

    这篇文章主要介绍了jupyter notebook清除输出方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python结合spaCy 进行简易自然语言处理

    Python结合spaCy 进行简易自然语言处理

    这篇文章主要为大家介绍了Python结合spaCy进行简易自然语言处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 下载安装好python后想查看python安装位置的几种方法

    下载安装好python后想查看python安装位置的几种方法

    这篇文章主要介绍了在Windows系统中查看Python路径和版本的几种方法,并提供了一个清除命令行窗口的技巧,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • python入门之语言基础

    python入门之语言基础

    这篇文章主要介绍了Python入门之基础语法详解,文中有非常详细的代码示例,对正在学习python的小伙伴们有很大的帮助哟,需要的朋友可以参考下
    2021-10-10
  • 自动在Windows中运行Python脚本并定时触发功能实现

    自动在Windows中运行Python脚本并定时触发功能实现

    讲一下在Python中写好了一个脚本之后,怎么自动双击一个程序自动就跑起来。以及,怎么在Windows 10中设计定期定时触发并跑脚本,有需要的朋友可以参考下
    2021-09-09
  • Pytorch搭建YoloV5目标检测平台实现过程

    Pytorch搭建YoloV5目标检测平台实现过程

    这篇文章主要为大家介绍了Pytorch搭建YoloV5目标检测平台实现过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 使用Python的turtle模块绘制樱花树的代码示例

    使用Python的turtle模块绘制樱花树的代码示例

    Python的turtle模块是一个直观的图形化编程工具,让用户通过控制海龟在屏幕上的移动来绘制各种形状和图案,在接下来的文章中,我将通过一个生动的例子——绘制一幅樱花树图画——来深入探讨turtle模块的实用性,需要的朋友可以参考下
    2024-04-04
  • 在pytorch中计算准确率,召回率和F1值的操作

    在pytorch中计算准确率,召回率和F1值的操作

    这篇文章主要介绍了在pytorch中计算准确率,召回率和F1值的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • PyQt5每天必学之滑块控件QSlider

    PyQt5每天必学之滑块控件QSlider

    这篇文章主要为大家详细介绍了PyQt5每天必学之滑块控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python设计模式中的结构型适配器模式

    Python设计模式中的结构型适配器模式

    这篇文章主要介绍了Python设计中的结构型适配器模式,适配器模式即Adapter Pattern,将一个类的接口转换成为客户希望的另外一个接口,下文内容具有一定的参考价值,需要的小伙伴可以参考一下
    2022-02-02

最新评论