Flask

Flask

1. Flask 是一个Python实现的WEB开发微框架;
1)django — 完善完整高集成的框架
2) flask — 不包含数据库抽象微框架,database, templates 需要自己组装
2. 安装
创建虚拟环境: virtualenv --no-site-packages flaskenv
cd flaskenv/Script
启动虚拟环境: activate
3. 新建与运行Flask
1) 新建:Pycharm新建project, 环境选择已经建好的虚拟环境, 项目选择flask;
2) 运行: python xxx.py  -- 启动默认127.0.0.1:5000端口
3) 运行参数: debug = True 调试
            port = '8000' 端口
            host = '0.0.0.0' IP
4. 修改启动方式
1) 安装包: pip install flask-script
2) 启动方式: python xxx.py runserver -p 端口 -h IP地址 -d
5. 蓝图 – 管理url, 规划url
1) 安装包: pip install flask-blueprint
2) 初始化
3) 路由注册

【4、5注解:端口,IP默认为:127.0.0.1:5000 -d 为调试模式】

6. route规则
a) django:
    \(\d+)\
    \<?P(\d+)>\
b) flask
    <converter:name>
    # converter 可以是如下内容,name为参数
    string:默认字符串,可以省略
    int: 整型
    float: 浮点型
    path: '/'也是可以当做字符串返回
    uuid: uuid类型
7. request 请求
args -- GET请求,获取参数
form -- POST请求,获取参数
files -- 上传的file文件
method -- 请求方式
8. 蓝图前缀
url_prefix = 'hello'
9. response 响应
服务端自己创建,然后返回给客户端
传入自己定义的状态码(如404,500等)
make_response('页面', 状态码)
10. 使用数据库
SESSION_TYPE类型: redis, mongdb, memcached, sqlchemy
    #1 秘钥
        app.config['SECRET_KEY'] = 'secret_key'
    #2 使用redis存储信息,默认访问本地redis,127.0.0.1:6379
        app.config['SESSION_TYPE'] = 'redis'
    #3. 连接远程redis
        app.config['SESSION_REDIS'] = redis.Redis(host='此处填IP地址',post='6379',password='数据库密码'

【注1】:
session: session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源,但现在服务器已经发展至今,一些session信息还是绰绰有余的。
【注2】
flask中使用cookie和session
1) cookies:在Flask中操作cookie,是通过response对象来操作,可以在response返回之前,通过response.set_cookie来设置,这个方法有以下几个参数需要注意:
a) key:设置的cookie的key。
b) value:key对应的value。
c) max_age:改cookie的过期时间,如果不设置,则浏览器关闭后就会自动过期。
d) expires:过期时间,应该是一个datetime类型。
e) domain:该cookie在哪个域名中有效。一般设置子域名,比如cms.example.com。
f) path:该cookie在哪个路径下有效。
2) session:Flask中的session是通过from flask import session。然后添加值key和value进去即可。并且,Flask中的session机制是将session信息加密,然后存储在cookie中。专业术语叫做client side session。

11. 网页‘挖坑’、‘填坑’
{% block xxx %}{% endblock %}
12. 加载css:
a) Django:
    第一种方式: 
        {% load static %}
        <link rel="stylesheet" href="{% static 'css/xxx.css'%}">
    第二种方式:
        <link rel="stylesheet" href="/static/css/xxx.css">
b) Flask
    第一种方式:
        <link rel="stylesheet" href="{{ url_for('static', filename='css/xxx.css')}}">
    第二种方式:
        <link rel="stylesheet" href="/static/css/xxx.css">
13. 网页过滤器
safe: 渲染标签
striptags: 渲染之前去掉标签

trim: 去掉空格
length: 计算长度

第一个字母: {{ i|first }}
最后一个字母: {{ i|last }}
全部转换为小写: {{ i|lower }}
全部转换为大写: {{ i|upper }}
首字母大写: {{ i|capitalize }}
14. 数据库
a) 安装模块:
    pip install flask-sqlalchemy
    pip install pymysql

primary_key: 指定主键
autoincrement: 自增
unique: 唯一
default: 默认值
Integer: 整型
String: 字符串

__tablename__: 指定数据库名称

b) 连接数据库:
    app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:此处填密码@IP:端口/数据库名称'

c) 添加多条学生信息:
    s_list = [学生对象1,学生对象2, ......]
    db.session.add_all(s_list)

d) 运算符
    1) filter(模型名.字段.运算符('xxx'))
        例如:filter(Student.s_age.__lt__(20)) -- 查找年龄少于20岁的学生
    2) filter(模型名.字段 运算符 值)
        例如: filter(Student.x_age < 20) --查找年龄少于20岁的学生

    __lt__ 小于
    __le__ 小于等于
    __gt__ 大于
    __ge__ 大于等于

    in_ 在......范围内
    order_by() 排序
    limit(n) 截取n个信息
    offset(n) 跳过n个信息
    get 获取主键对应的信息

    or_ 或
    and_ 且
    not_ 非

e) 分页
    paginate对象
    pages 总页数
    total 总条数
    has_prev 是否有上一页
    has_next 是否有下一页

    iter_pages() 当前一共多少页

f) 一对多 one_to_many Foreignkey
    【例如班级--学生, 一个班级有多个学生】
    在many的model中定义含Foreignkey的字段:
        例:s_g = db.Column(db.Integer, db.Foreignkey(Grade.g_id), nullable=True)
    在one的model中定义relationship字段
        例:students = db.relationship('Student', backref='stu', lazy=True)
    1) 通过one找many: one的对象.students,结果为many的结果
    2) 通过many找one: many的对象.stu,结果为one的对象

g) 多对多 many_to_many
    关键字:Foreignkey、中间表、relationship
        例如学生和课程:
            中间表:
                sc = db.Table {'sc',
                     db.Column('s_id',db.Integer,db.Foreignkey('Student.s_id'),primary_key=True),
                     db.Column('c_id',db.Integer,db.Foreignkey('Course.c_id',primary_key=True))
                }
            课程表需要添加:
                students = db.relationship('Student',secondary=sc,backref='cour')
            1) 通过学生找到所选的课程--列表:
            学生的对象.cour
            2) 通过课程找到选这门课的所有学生--列表:
            课程的对象.students
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值