Hello ,Flask!

232 阅读1分钟

第一次启动Flask


  • 创建一个项目
cd ~/Desktop/demos/hello

  • 创建文件 hello/app.py
from flask import Flask

app = Flask(__name__)   # 创建程序实例 ”__name__“:是模块或包的名称,例如现在是 `app`

@app.route("/")
def hello():
  return "<h1>Hello Flask!</h1>"

注册路由

在一个web应用里,客户端和服务器上的Flask程序得交互可以简单的概括为一下几步:

  1. 用户在浏览器输入URL访问某个资源
  2. Flask接收用户请求并分析请求得URL
  3. 为这个URL找到对应得处理函数
  4. 执行函数并生成响应,返回给浏览器
  5. 浏览器接收并解析响应,将信息显示在页面中

注册路由:只需为函数附加 app.route() 装饰器,并传入URL规则作为参数,就可以让URL与函数建立关联。

  • 路由负责管理URL和函数之间的映射
  • 这个函数被称为 视图函数(view function)
  • route()装饰器得第一个参数是URL规则,用字符串表示,必须以(/)开始,并且是相对路径(不包含域名)。

视图绑定多个URL

@app.route('/hi')
@app.route('/hello')
def say_hello():
return "<h1>Hello, Flask!</h1>"

动态URL

@app.route('/greet/<name>')
 def greet(name):
 return "<h1>Hello, %s!</h1>" % name
  • 设置动态url参数的默认值defaults = {'name':'programmer'}
@app.route('/greet', defaults = {'name':'programmer'})
@app.route('/greet/<name>')
def greet(name):
  return "<h1>Hello, %s!</h1>" % name
  
------------------------------
上面与下面相同

@app.route('/greet')
@app.route('/greet/<name>')
def greet(name = 'projrammer'):
  return "<h1>Hello, %s!</h1>" % name


启动开发服务器

基本运行方式

$ flask run

$ pipenv run flask run # 虚拟环境运行flask服务

$ python -m flask run # python环境启动服务器

默认监听端口

http://127.0.0.1:5000

http://localhost:5000

自动发现程序实例

flask会从当前目录寻找app.py / wsgi.py 模块,并从中寻找名为app或者application得程序实例。

要想修改这一规则,则需要添加环境变量:↓

export FLASK_APP = hello # linux or macos

set FLASK_APP = hello # windows

使用 python-dontenv 管理环境变量

当安装了python-dotenv时,Flask在加载环境变量的优先级是:手动设置的环境变量>.env中设置的环境变量>.flaskenv设置的环境变量。

pipenv install python-dotenv

在项目得根目录下创建 .env / .flaskenv 文件。 - .env : 存储Flask相关的公开环境变量 - re: FLASK_APP - .flaskenv :存储包含敏感信息得环境变量 - re:Email服务器得账户名和密码

更多启动选项

  • 指定host
flask run --host={指定ip}
# 这个指定ip如果填写为本机得ip地址,那么 在同一局域网下,任意设备都可以访问
  • 指定port
flask run --port=8888
# Flask提供的Web服务默认是 5000端口,可以启动一个没人用的端口来指定

指定运行环境

  • 设置开发环境
    • 在开发环境下,调试模式(Debug Mode)会被自动开启,并且会激活 Werkzeug内置得调试器和重载器
.flaskenv 文件加入如下内容:

FLASK_ENV=development 

重载器

  • 调试模式会自带一个重载器
  • 安装 Watchdog库,来检测文件变动
pipenv install watchdog --deveeeeeeeeee

项目配置

加载配置

app.config['ADMIN_NAME'] = 'Peter'

加载多个值

app.config.update(
  TESTING=True,
  SECRET_KEY='_HJh123ljflkew'
)

URL与端点

url_for() 第一个参数为端点(endpoint)值

@app.route('/')
def index():
  return "hello flask"
 
 url_for('index')

@app.route('/hello/<name>')
def greet(name):
  return "hello %s" % name
  
 url_for('greet', name = "Wuhan")


Flask命令

@app.cli.command()

@app.cli.command()
def hello():
  click.echo("Hello , Human!")

---------
$ flask hello
Hello , Human!

模板与静态文件

一个正常得flask文件得正常结构

hello/
  - templates/
  - static/
  - app.py

  • templates : 模板文件存放处(html文件等)
  • static: 静态文件存放处(图片等)