Bootstrap-Flask:简化页面编写

安装: pip install bootstrap-flask

初始化

  1. from flask import Flask
  2. from flask_bootstrap import Bootstrap
  3. app = Flask(__name__)
  4. bootstrap = Bootstrap(app)

快捷加载资源:

  • bootstrap.load_css() ; bootstrap.load_js() 分别加载css和js
  • 配置变量BOOTSTRAP_SERVE_LOCAL=True可使用本地资源,开发环境自动使用本地资源
  1. <head>
  2. {{ bootstrap.load_css() }}
  3. </head>
  4. {{ bootstrap.load_js() }} #传入使用with_jquery和with_popper可以设置是否加载jQuery和Popper.js,默认为False

快捷渲染表单

  • Bootstrap-Flask内置了两个用于渲染WTForms表单类的宏:render_field 和 render_form()
    • render_field:
    • render_form:渲染整个表单的宏,自动渲染错误、验证状态样式、csrf. 传入form一行代码渲染整个表单。
  • 通过其内置的bootstrap/form.html模板导入
  1. {% from 'bootstrap/form.html' import render_form %}
  2. <div class="form">
  3. {{ render_form(form) }} #自动渲染整个表单,还可以传入参数自定义表单
  4. </div>
参数 默认值 说明
method ‘post’
extra_class 额外添加的类属性
role 表单的role属性
form_type basic 表单的样式,basic、inline、horizontal
button_map 匹配按钮字段name属性到Bootstrap按钮样式类型的字段:info\primary\secondary\danger\warning\success\light\dark,默认secondary即btn btn-secondary
id
action 表单提交的URL ,默认当前URL

其他内置常用的宏

模板路径 说明
render_field() bootstrap/form.html 渲染单个WTForms表单字段
render_form() bootstrap/form.html 渲染整个WTForms表单
render_pager() bootstrap/pagination.html 渲染一个基础分页导航,仅包括上一页、下一页
render_pagination bootstrap/pagination.html 渲染一个标准分页导航
render_nav_item() bootstrap/nav.html 选择导航链接
render_breadcrumb_item() bootstrap/ 渲染面包屑链接

Flask_Ckeditor:富文本编辑器

https://www.yuque.com/jiuri/rl92ce/ivkpvm#3KA52

Flask-Moment:本地化日期和时间

显示本地时间, 首先需要在服务器存储不包含时区的纯正时间/utc时间(datetime.utcnow); 然后在客户端使用js获取本地时区并转换显示本地时间。

使用Moment.js
moment.js是一个用于处理时间和日期的开源js库,还提供了丰富的时间渲染格式支持。

Flask-Moment
Flask-Moment集成了moment.js的常用的时间和日期处理函数

安装:pip install flask-moment

初始化

  1. from flask_moment import Moment
  2. app = Flask(__name__)
  3. moment = Moment(app)

加载资源设置
1 加载moment.js资源:

  • 使用moment.include_moment()加载Moment.js资源; 使用moment.include_jquery()加载jQuery资源。 默认从cdn加载,传入local_js参数指定本地资源。
  • 默认使用英文, 使用moment.locale()方法更改语言
  1. {{ moment.include_moment(local_js=url_for('static', filename='js/moment-with-locales.min.js')) }}
  2. {{ moment.local(auto_detect=True) }} #探测客户端语言并设置,或使用moment.local('zh-cn')设置为中文

渲染日期时间
对moment传入utcnow()方法创建的时间为参数,并调用format()方法来格式化日期和时间
{{ moment(created_time).format(‘格式字符串’) }}

Moment.js内置格式字符串:

格式字符串 输出示例
L 2018-1-1
LL 2018年1月1日
LLL 2018年1月1日早上8点00分
LLLL 2018年1月1日星期一早上8点00分
TL 早上8点00分
TLS 早上8点0分0秒
III 2018年1月1日 03:22
IIII 2018年1月1日星期一 03:22

输出相对时间:fromNow()
{{ moment(created_time).fromNow(refresh=True) }} #refresh=True可以在页面不重载情况自动刷新

其他方法:format()、fromNow()、 fromTime()、 calendar()、 valueof()

Faker:生成虚拟数据

faker有20多种数据类型; 性名、地址、账号、信用卡、时间、职位、公司名称等

安装: pip install faker —dev

初始化

  1. from faker import Faker
  2. faker = Faker() #faker('zh_CN') 指定语言,否则默认为英文
  3. faker.name
  1. @app.cli.command()
  2. @click.option('--count', default=20, help='消息数量')
  3. def forge(count):
  4. from faker import Faker
  5. faker = Faker('zh_CN')
  6. db.drop_all()
  7. db.create_all()
  8. for i in range(count):
  9. message = Message(
  10. name = faker.name(),
  11. body = faker.sentence(),
  12. created_time = faker.date_time_this_year()
  13. )
  14. db.session.add(message)
  15. db.session.commit()
  16. click.echo('完成。。%s 条数据' % count)

Flask-DebugToolbar调试程序

安装:pip install flask-debugtoolbar —dev

初始化

  1. from flask import Flask
  2. from flask_debugtoolbar import DebugToolbarExtension
  3. app = Flask(__name__)
  4. toobar = DebugToolbarExtension(app) #只在调试模式才会启动
  5. DEBUG_TB_INTERCEPT_REDIRECTS=False #默认会拦截重定向请求, 配置为False关闭

Flask-Login:管理用户认证

安装:pip install flask-login

实例化Flask-Login提供的LoginManager类

  1. from flask-login import LoginManager
  2. login = LoginManager(app)

让用户类继承Flask-Login提供的UserMixin类,可以获得下述方法和属性,通过各种属性和方法判断用户的状态。

属性/方法 说明
is_authenticated 如果用户已经认证通过则返回True, 否则False
is_active 如果用户登陆则返回True,否则false
is_anonymous 如果当前用户未登陆(匿名用户),则返回True,否则返回False
get_id() 默认查找用户对象的id属性。以Unicode形式返回用户的唯一标识符

ps:这些属性可以通过继承获得,也可以在用户对象模型中定义

  1. from flask_login import UserMixin
  2. class Admin(db.Model, UserMixin):
  3. ...
  • 使用Flask-Login提供的current_user对象判断登陆状态,它返回与当前用户对应的用户模型对象,用户模型对象通过login_manager.user_loader装饰器的函数返回,函数接收用户id为参数,返回用户对象。
  • 判断登陆状态:通过对current_user对象调用is_authenticated属性判断登陆状态。(它被注册到模板上下文中因此可以在模板中调用) ```python @login_manager.user_loader def load_user(user_id): from myblog.models import Admin user = Admin.query.get(user_id) return user

现在调用current_user时,Flask-Login会调用用户加载函数并返回用户对象

```

Flask-APScheduler

安装 pip install flask_apscheduler

https://blog.csdn.net/arnolan/article/details/84936075
https://www.cnblogs.com/zhangliang91/p/11603916.html