day01-视图及路由

视图及路由

Flask简介

web应用程序的本质
web框架
flask
  • flask常用扩展包

虚拟环境

为什么要搭建虚拟环境
  • 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.
  • 所有的虚拟环境都位于/home/下的隐藏目录.virtualenvs
  • 在开发过程中, 当需要使用python的某些工具包/框架时需要联网安装
  • 安装指令:安装flask框架flask -0.10.1版本
    • sudo pip install flask==0.10.1
如何搭建虚拟环境
  • 安装虚拟环境命令

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
    
  • 配置环境变量

    1. 创建目录,用来存放虚拟环境

      1. mkdir 
        $HOME/.virtualenvs
        
    2. 打开~/.bashrc文件,并添加如下:

      1. export WORKON_HOME=$HOME/.virtualenvs
        source /usr/local/bin/virtualenvwrapper.sh
        
    3. 运行

      1. source ~/.bashrc
        
  • 创建虚拟环境命令:

    1. 在python2中,创建虚拟环境

      1. mkvirtualenv 虚拟环境名称
        
    2. 在python3中创建虚拟环境

      1. mkvirtualenv -p python3 虚拟环境名称
        
如何使用虚拟环境
  • 查看虚拟环境
    • workon 两次tab键
  • 使用虚拟环境命令
    • workon 虚拟环境名称
  • 退出虚拟环境命令
    • deactivate
  • 删除虚拟环境的命令
    • rmvirtualenv 虚拟环境名称
    • 要先退出当前虚拟环境 ,再执行删除
如何在虚拟环境中安装工具包
  • pip install 包名称

实现hello world程序

在pycharm里面创建一个python项目,选选择之前的创建的虚拟环境
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'hello world!'

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

相关的配置参数

初始化参数

1545478764213

  • import_name
    • Flask程序所在的包(模块),传‘name’就可以
    • 可以决定Flask在访问静态文件时查找的路径
  • static_path
    • 已经不适用了,旧版本还可以用static_url_path代替
    • 可以不传
  • static_folder
    • 静态文件存储的文件夹,可以不传,默认为 static
  • template_folder
    • 模板文件存储的文件夹,可以不传,默认为 templates
程序加载配置
  • 从配置对象中加载(常用)
    • app.config.from_object()
  • 从配置文件中加载
    • app.config.from_pyfile()
  • 从环境变量中加载(了解)
    • app.config.from_envvar()
使用方式
  • 从配置对象中加载,创建配置的类
# 配置对象,里面定义需要给 APP 添加的一系列配置
class Config(object):
    DEBUG = True
# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
# 从配置对象中加载配置
app.config.from_object(Config)
  • 创建配置文件config.ini,在配置文件中添加配置
读取配置
  • app.config.get()
  • 在视图函数中使用 current_app.config.get()
  • 注:Flask 应用程序将一些常用的配置设置成了应用程序对象的属性,也可以通过属性直接设置/获取某些配置:app.debug = True
app.run的参数
  • 可以指定运行的主机IP地址,端口,是否开启调试模式

    app.run(host="0.0.0.0", port=5000, debug = True)
    

路由基本定义

路由的传参
  • 路由传递的参数默认当做 string 处理,也可以指定参数的类型
路由的请求方式
  • 默认有GET,OPTIONS,HEAD

  • 可以在装饰器参数里面加入method指定请求方式

    @app.route('/demo2', methods=['GET', 'POST'])
    
PostMan的使用

视图常用逻辑

返回JSON
  • 在使用 Flask 写一个接口时候需要给客户端返回 JSON 数据,在 Flask 中可以直接使用 jsonify 生成一个 JSON 的响应
  • 了解另外另个方法
    • json.dump
    • json.load
重定向
# 重定向
@app.route('/demo5')
def demo5():
    return redirect('指定url')
  1. 重定向到自己写的视图函数

    1. 可以直接填写自己 url 路径
    2. 也可以使用 url_for 生成指定视图函数所对应的 url
  2. 重定向到带有参数的视图函数

    • 在 url_for 函数中传入参数

      return redirect(url_for('user_info', user_id=100))
      
自定义状态码
  • 在 Flask 中,可以很方便的返回自定义状态码,以实现不符合 http 协议的状态码

    @app.route('/demo6')
    def demo6():
        return '状态码为 666', 666
    

正则匹配路由

  • 实现步骤
    • 导入转换器基类:在 Flask 中,所有的路由的匹配规则都是使用转换器对象进行记录
    • 自定义转换器:自定义类继承于转换器基类
    • 添加转换器到默认的转换器字典中
    • 使用自定义转换器实现自定义匹配规则

1545480140948

自定义转换器的其他两个函数
  • to_python:
  • to_url:

1545480222897

系统自带的转换器
DEFAULT_CONVERTERS = {
    'default':          UnicodeConverter,
    'string':           UnicodeConverter,
    'any':              AnyConverter,
    'path':             PathConverter,
    'int':              IntegerConverter,
    'float':            FloatConverter,
    'uuid':             UUIDConverter,
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值