基础
轻量级python后端框架
网址
学习目录
flask路由
用来匹配url
request对象
abort函数
模板
flask数据库
表单
ajax
管理系统案例(略)
安装
命令:pip install flask -i https://pypi.douban.com

from flask import Flask

app = Flask(name)

@app.route(‘/’)
def hello_world(): # put application’s code here
return ‘Hello World!’

if name == ‘main’:
app.run()

路由
基础路由
类似springboot中写法,与django相区别
@app.route(‘/’)
def hello_world(): # put application’s code here
return ‘Hello World!’

methods使用
请求格式,分get,post

endpoint:防止函数名重名
route重名从上到下

参数<>
字符串处理

  1. route里需要加
  2. 函数()要添加变量xxx

转换器
例:int:id
int, string,float
path包含/的文本

自定义转换器
<>:提取参数
from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(name)

class RegexConverter(BaseConverter):

def __init__(self, url_map, regex):
    # 调用父类方法
    super(RegexConverter, self).__init__(url_map)
    self.regex = regex

    def to_python(self, value):
        print("to_python方法被调用")
        return value

app.url_map.converters[‘re’] = RegexConverter

{‘re’: ‘^(?P[a-z]+)$’}

@app.route(‘/index/<re(“123”):value>’)
def index(value):
return ‘hello %s’ % value

if name == ‘main’:
app.run()

form表单

  1. 相关前端页面
  2. 后端使用render_template关联
    from flask import Flask, render_template

app = Flask(name)

@app.route(‘/’)
def index(): # put application’s code here
return render_template(‘index.html’)

if name == ‘main’:
app.run()

request对象
包含前端发送过来的所有请求数据
● request.method 请求类型
● request.from.get(‘name’) 请求内容

重定向

  1. redirect(‘网址’)
  2. redirect(url_for(hello))不加redirect返回route内字符串

返回json数据给前端

  1. 基础格式

  2. 中文输出

  3. json回传

JSONIFY使用

abort函数
raise 主动抛出异常
abort 在网页中抛出异常

自定义异常
返回文字

返回网页

模板 jinja2

  1. 数据回传

  2. 设置jinja2

a. 取值方法

过滤器

  1. 系统自带过滤器
  2. 自定义过滤器
    跳着取值

flask表单
定义表单类型

使用
前端

后端(之前pass部分修改)

验证器
validate_on_submit验证器,验证表单数据(EqualTo那里)

flask数据库
基础操作
安装
命令:pip install flask-sqlalchemy
问题
用户无权限
ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: ‘F:\AI\anaconda3\Lib\site-packages\~arkupsafe\_speedups.cp38-win_amd64.pyd’
Consider using the --user option or check the permissions.
更换命令pip install --user flask-sqlalchemy
缺少依赖
ERROR: pip’s dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
anaconda-project 0.9.1 requires ruamel-yaml, which is not installed.
根据提示安装相应依赖
执行:pip install ruamel-yaml后重新执行原命令即可
代码

创建模型类

创建数据表

  1. 单次操作提交

  2. 多次操作提交

命令行查询数据库
● 提前导入数据库:from xxx import *
● User.query.all() 获取对象
○ User.query.get(1).name 获取名字
○ User.query.filter(User.name == ‘zhangsan’).get() 过滤,查找名字为zhangsan的数据
○ User.query.filter(User.name.like(‘%a%’)).all() 模糊匹配
○ User.query.filter(and_(User.name == ‘zhangsan’,User.id == ‘1’)).all()
■ 需要from sqlalchemy import and_
● 修改数据
○ 获取数据:user = User.query.get(1)
○ 修改数据:user.name = ‘hello’
○ 提交:db.session.commit()
● 删除数据
○ 获取数据:user = User.query.get(1)
○ 删除数据:db.session.delete(user)
○ 提交:db.session.commit()