Bootstrap-Flask:简化页面编写
安装: pip install bootstrap-flask
初始化
from flask import Flask
from flask_bootstrap import Bootstrap
app = Flask(__name__)
bootstrap = Bootstrap(app)
快捷加载资源:
- bootstrap.load_css() ; bootstrap.load_js() 分别加载css和js
- 配置变量BOOTSTRAP_SERVE_LOCAL=True可使用本地资源,开发环境自动使用本地资源
<head>
{{ bootstrap.load_css() }}
</head>
{{ 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模板导入
{% from 'bootstrap/form.html' import render_form %}
<div class="form">
{{ render_form(form) }} #自动渲染整个表单,还可以传入参数自定义表单
</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
初始化
from flask_moment import Moment
app = Flask(__name__)
moment = Moment(app)
加载资源设置
1 加载moment.js资源:
- 使用moment.include_moment()加载Moment.js资源; 使用moment.include_jquery()加载jQuery资源。 默认从cdn加载,传入local_js参数指定本地资源。
- 默认使用英文, 使用moment.locale()方法更改语言
{{ moment.include_moment(local_js=url_for('static', filename='js/moment-with-locales.min.js')) }}
{{ 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
初始化
from faker import Faker
faker = Faker() #faker('zh_CN') 指定语言,否则默认为英文
faker.name
@app.cli.command()
@click.option('--count', default=20, help='消息数量')
def forge(count):
from faker import Faker
faker = Faker('zh_CN')
db.drop_all()
db.create_all()
for i in range(count):
message = Message(
name = faker.name(),
body = faker.sentence(),
created_time = faker.date_time_this_year()
)
db.session.add(message)
db.session.commit()
click.echo('完成。。%s 条数据' % count)
Flask-DebugToolbar调试程序
安装:pip install flask-debugtoolbar —dev
初始化
from flask import Flask
from flask_debugtoolbar import DebugToolbarExtension
app = Flask(__name__)
toobar = DebugToolbarExtension(app) #只在调试模式才会启动
DEBUG_TB_INTERCEPT_REDIRECTS=False #默认会拦截重定向请求, 配置为False关闭
Flask-Login:管理用户认证
安装:pip install flask-login
实例化Flask-Login提供的LoginManager类
from flask-login import LoginManager
login = LoginManager(app)
让用户类继承Flask-Login提供的UserMixin类,可以获得下述方法和属性,通过各种属性和方法判断用户的状态。
属性/方法 | 说明 |
---|---|
is_authenticated | 如果用户已经认证通过则返回True, 否则False |
is_active | 如果用户登陆则返回True,否则false |
is_anonymous | 如果当前用户未登陆(匿名用户),则返回True,否则返回False |
get_id() | 默认查找用户对象的id属性。以Unicode形式返回用户的唯一标识符 |
ps:这些属性可以通过继承获得,也可以在用户对象模型中定义
from flask_login import UserMixin
class Admin(db.Model, UserMixin):
...
- 使用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