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进行刷新才可。

相关推荐
廖子默2 分钟前
提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页时存在截断的解决思路
前端·pdf·html
ps酷教程11 分钟前
webrtc视频会议学习(三)
学习·webrtc
网络安全工程师老王17 分钟前
flask请求头回显的学习和探究如何进行错误页面污染回显
web安全·网络安全·信息安全·flask
楚疏笃27 分钟前
鸿蒙学习自由流转与分布式运行环境-跨端迁移(2)
分布式·学习·harmonyos
光影少年34 分钟前
react和vue图片懒加载及实现原理
前端·vue.js·react.js
AndyGoWei36 分钟前
react react-router-dom history 实现原理,看这篇就够了
前端·javascript·react.js
小仓桑39 分钟前
深入理解 JavaScript 中的 AbortController
前端·javascript
摸鱼也很难41 分钟前
解决 node.js 执行 npm下载 报无法执行脚本的错
前端·npm·node.js
换个名字不能让人发现我在摸鱼41 分钟前
裁剪保存的图片黑边问题
前端·javascript