flask随笔2

1.传统表单组成:
    是由大量的html标签组成的,唯一繁琐的地方在于一旦表单写好之后,如果要进行更改和增加验证功能比较麻烦.
    案例: 注册案例

    注意点:
    如果是表单提交,使用request.form获取

2.flask_wtf表单,属于flask的扩展包,通过类名称渲染表单,然后字段的形式渲染标签.
    好处:
        1.提供了验证函数
        2.提供了csrf校验机制.

    使用流程:
    1.安装扩展
        pip install flask_wtf
        from flask_wtf import FlaskForm
        from wtforms import 字段
        from wtforms.validates import 验证函数

    2.自定义类继承自FlaskForm,编写字段和验证函数
    3.创建表单,进行渲染

    注意点:
    1.由于flask_wtf表单提供了csrf验证机制,csrf_token的生成需要依赖于SECRET_KEY进行加密
    2.如果是wtf表单,获取数据方式, form.username.data
    3.flask_wtf表单默认开启了csrf校验.关闭方式: 
    4.通过validate_on_submit(),会校验:'POST', 'PUT', 'PATCH', 'DELETE'请求方式校验, 还会校验验证函数和csrf_token

3.ORM模型类表示的是扩展包flask_sqlahchemy中的SQLALchemy类
    orm: 将模型类中的类名,属性,对象,映射成数据库里面的表名,字段,一行一行数据.

    使用操作流程:
    1.安装,导入包
        pip install flask_sqlalchemy
        from flask_sqlalchemy import SQLAlchemy

    2.设置配置信息,比如:账号,密码地址等信息
    3.创建SQLAlchemy类对象,关联app
    4.编写模型类,继承db.Model
    5.操作数据库使用方法而不是sql语句了.
        添加单个对象:db.session.add(obj)
        添加多个对象:db.session.add_all([obj1,obj2])
        提交数据库: db.session.commit()
        删除: db.session.delete()
        回滚: db.session.rollback()

    外键:用来表示表与表之间的关系,一般设置在多方

    注意点:
    1. 如果安装的数据库驱动是flask_mysqldb 使用mysql://root:123456@127.0.0.1:3306/basic8
    2. 如果安装的数据库驱动是pymysql 使用mysql+pymysql://root:123456@127.0.0.1:3306/basic8
    3. 默认生成的表名称是类名称小写,如果需要手动指定表名,编写__tablename__ = '表名'

4.图书馆小案例:
功能描述:
1. 可以添加书籍
    如果作者存在,书籍存在,不能添加
    如果作者存在,书籍不存在,可以添加
    如果作者不存在, 可以添加
2. 删除书籍
3. 删除作者, 同时删除该作者的所有书籍

思路分析:
1.创建表单wtf
2.配置数据库
3.具体功能操作

数据库增加,删除,修改操作:
增加:
user = User(name='laowang')
db.session.add(user)
db.session.commit()

修改:
user.name = 'xiaohua'
db.session.commit()

删除:
db.session.delete(user)
db.session.commit()

查询所有用户数据
User.query.all()

查询有多少个用户
User.query.count()

查询第1个用户
User.query.all()[0]

查询id为4的用户[3种方式]
User.query.get(4)
User.query.filter_by(id = 4).first()
User.query.filter(User.id == 4).first()

查询名字结尾字符为g的所有数据[开始/包含]
User.query.filter(User.name.endwith('g')).all()
User.query.filter(User.name.startswith('g')).all()
User.query.filter(User.name.contains('g')).all()

查询名字不等于wang的所有数据[2种方式]
查询名字和邮箱都以 li 开头的所有数据[2种方式]
User.query.filter(User.name.startswith('li'),User.email.startswith('li')).all()
User.query.filter(and_(User.name.startswith('li'),User.email.startswith('li'))).all()

查询password是 `123456` 或者 `email` 以 `itheima.com` 结尾的所有数据
User.query.filter(or_(User.password == '123456',User.email.endswith('itheima.com'))).all()

查询id为 [1, 3, 5, 7, 9] 的用户列表
User.query.filter(User.id.in_([1,3,5,7,9])).all()

查询name为liu的角色数据
user = User.query.filter(User.name == 'liu').first()
role = Role.query.filter(Role.id == user.role_id).first()

查询所有用户数据,并以邮箱排序
User.query.order_by(User.email).all()
User.query.order_by(User.email.desc()).all()

每页3个,查询第2页的数据
paginate = User.query.paginate(page, per_page,Error_out)
paginate = User.query.paginate(2,3,False)
page: 哪一个页
per_page: 每页多少条数据
Error_out: False 查不到不报错
pages: 共有多少页
items: 当前页数的所有对象
page: 当前页

传统表单的渲染

wtf表格的页面渲染

library

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值