flask web开发学习之初识flask(二)

文章目录

        • 一、创建程序实例并注册路由
          • [1. 为视图绑定绑定多个URL](#1. 为视图绑定绑定多个URL)
          • [2. 动态URL](#2. 动态URL)
        • 二、启动开发服务器
          • [1. 自动发现程序实例](#1. 自动发现程序实例)
          • [2. 管理环境变量](#2. 管理环境变量)
          • [3. 使用pycharm运行服务器](#3. 使用pycharm运行服务器)
          • [4. 更多的启动选项](#4. 更多的启动选项)
          • [5. 设置运行环境](#5. 设置运行环境)
          • [6. 调试器](#6. 调试器)
          • [7. 重载器](#7. 重载器)

一、创建程序实例并注册路由

app.py

复制代码
# 从flask包中导入flask类
from flask import Flask

# 实例化Flask类
app = Flask(__name__)


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

Flask(name) 会使用当前模块的名称作为参数,以便确定程序的根目录,从而能够找到静态文件夹和模板文件夹。

只需为函数附加app.route()装饰器,并传入URL规则做为参数,我们就可以让URL和函数建立关联。这个过程我们称作注册路由 。路由负责管理URL和函数之间的映射,而这个函数则被称为视图函数

1. 为视图绑定绑定多个URL

一个视图函数可以绑定多个URL。比如下面访问'/'和访问'/hello'都会触发index函数,得到相同响应。

复制代码
@app.route('/')
@app.route('/hello')
def index():
    return '<h1>Hello,Flask!<h1/>'
2. 动态URL

我们不仅可以为视图函数绑定多个URL,还可以在URL规则中添加变量部分。

使用"<变量>"的形式。flask处理请求时会把变量传入视图函数,我们可以添加参数获取这个变量值。如果用户访问的url中没有添加变量,此时会返回一个404错误,这时我们可以通过添加默认参数defaluts或者设置name的默认值来设置url变量的默认值,以避免404错误。

复制代码
@app.route('/')
@app.route('/hello/<name>', defaults={'name': "zly"})
def index(name='zly'):
    return '<h1>Hello,%s!<h1/>' % name
二、启动开发服务器

flask内置了一个简单的开发服务器(由依赖包Werkzeug提供),足够在开发环境中使用。

复制代码
flask run  # 启动开发服务器


1. 自动发现程序实例

启动开发服务器后,flask可以自动探测程序实例,自动探测以下规则:

  • 从当前目录寻找app.py和wsgi.py模块,并从中寻找app或application的程序实例。
  • 从环境变量FLASK_APP对应的模块/导入路径寻找名为app或application的程序实例。
2. 管理环境变量

如果安装了python-dotenv模块,那么在使用flask run 或其它命令时它自动从.flaskenv文件和.env文件中加载环境变量。

优先级:
手动设置的环境变量>.env文件>.flaskenv文件

在.env文件中添加:

复制代码
FLASK_RUN_HOST=0.0.0.0
FLASK_RUN_PORT=8000
3. 使用pycharm运行服务器

在pycharm中,我们可以使用内置的命令行串口执行命令来启动开发服务器,也可以使用pycharm内置的运行功能。

按如上进行配置即可。

4. 更多的启动选项
  • 使服务器外部可见

    flask run --host=0.0.0.0

添加--host选项,将主机地址设置为0.0.0.0使其对外可见。

  • 改变默认端口

    flask run --port=8000

flask提供的服务器默认监听5000端口,可通过传入port参数来改变监听端口。
可通过在环境配置文件中设置FLASK_RUN_HOST与FLASK_RUN_PORT来配置。

5. 设置运行环境

开发环境时指我们在本地编写和测试程序时的计算机环境,而生产环境是指网站部署上线供用户访问时的服务器环境。为了区分运行环境,Flask提供了一个FLASK_ENV的环境变量用来设置环境,默认为production(生产环境)。可以将其改为development(开发环境),这会开启所有支持开发的特性。同时可以通过FLASK_DEBUG来配置调试模式,1为开启,0为关闭。

在.flaskenv文件中写入:

复制代码
FLASK_ENV=development
FLASK_DEBUG=1


在开发环境、调试模式下,这时执行flask run 启动程序会自动激活werkzeug内置的调试器以及重载器。

6. 调试器

调试器允许你在错误页面上执行Python代码。单击错误信息右侧的命令行图表,会弹出窗口要求输入PIN码,就是启动服务器时输出的PIN码,输入PIN码后,会有一个包含代码上下文信息的shell,我们可以利用他来调试。

7. 重载器

当我们对代码进行改动之后,期望的行为就是这些改动立刻作用到程序上。重载器的作用就是监测文件变动,然后重新启动服务器。

默认会使用werkzeug内置的stat重载器。他的缺点是耗电严重,准确率低。推荐使用Python库Watchdog,安装后会自动使用它来监测文件变动。

复制代码
pipenv install watchdog --dev  # --dev的作用是声明为开发依赖

如果有单独的css或js文件需要按下F5进行刷新才可。

相关推荐
zhougl9962 小时前
html处理Base文件流
linux·前端·html
花花鱼2 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
HBR666_2 小时前
marked库(高效将 Markdown 转换为 HTML 的利器)
前端·markdown
careybobo3 小时前
海康摄像头通过Web插件进行预览播放和控制
前端
杉之5 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
喝拿铁写前端5 小时前
字段聚类,到底有什么用?——从系统混乱到结构认知的第一步
前端
再学一点就睡5 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript
木木黄木木6 小时前
html5炫酷图片悬停效果实现详解
前端·html·html5
zhuyixiangyyds6 小时前
day21和day22学习Pandas库
笔记·学习·pandas
每次的天空6 小时前
Android学习总结之算法篇四(字符串)
android·学习·算法