宏¶
Flask-Bootstrap和宏一起让你的生活更简单。它们需要像下面的例子里这样导入:
{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
这会导入包含宏的模板 wtf.html
并简记为 wtf
(这些在 WTForms 支持 有一些讨论)。
除了这个页面上的较小的宏,对其他库也广泛支持。具体参见 WTForms 支持 和 Flask-SQLAlchemy 支持 。
跨浏览器支持¶
跨浏览器支持(特别对Internet Explorer < 9的版本来说)通常是 必要的,但是Flask-Bootstrap没有附加这个功能。你可以下载 html5shiv 和 Respond.js ,把它们放在你程序的静态文件夹,然后像下面的例子那样包含它们
{% import "bootstrap/fixes.html" as fixes %}
{% block head %}
{{super()}}
{{fixes.ie8()}}
{% endblock %}
- 当这些脚本文件没有被包含的时候,会使用CDN链接。所以如果你没有使用
BOOTSTRAP_SERVE_LOCAL
,它们会自动生效。具体见 CDN 支持
这里有关于Flask-Bootstrap如何实现CDN设置的细节。
Google Analytics¶
Google Analytics 的API最近变化的相当快,目前
analytics.js
是受支持最好的,使用 uanalytics(id, options='auto')
宏
{% import "bootstrap/google.html" as google %}
{% block scripts %}
{{super()}}
{{google.uanalytics('U-XXXX-YY')}}
{% endblock %}
可以传入选项给js函数 ga()
调用, 比如说利用
User ID 特性
{{google.uanalytics('U-XXXX-YY', {'userId': 'myUser'})}}
如果你想从外部配置Google Analytics的账户,可以这样
{{google.uanalytics(config['GOOGLE_ANALYTICS_ID'])}}
注解
请确保你至少正确验证(pseudomize)你的用户ID。
官方不赞成使用的 ga.js API
通过一个类似的叫做 analytics(account)
的宏被支持
{{google.analytics(account=config['GOOGLE_ANALYTICS_ID'])}}
Utilities¶
一些额外的模板宏可以在 bootstrap/utils.html
文件里获取。 和表单宏一样,这些是打算用来帮助快速开发应用的,在实际成熟的应用里,它们应该被合适的解决方案替换掉。
-
flashed_messages
(messages=None, container=True, transform=..., default_category=None, dismissible=False)¶ 渲染Flask的
flash()
消息。用常用的消息类别名称匹配稍不常用的Bootstrap CSS类名。 (即:error -> danger
)参数: - messages -- 一个消息的列表,如果没有给出,会使用
get_flashed_messages()
重新获取它们。 - container -- 如果设为True,会输出一个完整的 。
<div class="container">
元素,否则只是每条消息被包裹进一个<div>
里。 - transform -- 一个匹配消息类别的字典。查询时对大小写敏感。 默认匹配所有Python loglevel级别的 名称 到Bootdtrap CSS类。
- default_category -- 如果一个类别在transform里没有匹配,那么它会被直接传入,不作改变。
而如果设置了
default_category
,那么将会被替换为这个值。 - dismissible -- 如果设为True, 将会输出一个关闭按钮到消息上 如果想要完整功能的可关闭的消息提示, 你需要使用JavaScript消息提示(alert)插件。
- messages -- 一个消息的列表,如果没有给出,会使用
需要注意的是,要想让这些工作正常,显示的消息必须匹配一个有效的bootstrap消息类别。(也就是 success
,
info
, warning
, danger
之一。)
举例来说:
flash('Operation failed', 'danger')
3.3.5.7之前的Flask-Bootstrap的版本不对 flashed_messages
的内容进行转义,所以没法使用HTML。
这个规则已经改变了,现在推荐使用 Markup
包装器,可以让消息里的HTML生效:
from flask import flash
from markupsafe import Markup
# ...
flash(Markup('Flashed message with <b>bold</b> statements'), 'success')
user_name = '<b>ad username'
flash(Markup('<u>You</u> are our favorite user, <i>'
+ user_name
+ Markup('</i>!'),
'danger')
-
icon
(type, extra_classes, **kwargs)¶ 在一个
<span>
元素里渲染Glyphicon。参数: - messages -- 图标的短名字,比如
remove
。 - extra_classes -- 添加到类属性的附加类的列表
- kwargs -- 附加的HTML属性
- messages -- 图标的短名字,比如
渲染一个被表单包裹的按钮/链接。
参数: - url -- 要提交到的端点(endpoint)。
- content -- 按钮元素的内容。
- method -- 周围表单的
method
属性。 - class -- 按钮元素的
class
属性。 - kwargs -- 按钮元素的额外HTML属性。
一个方便的小方法,可以用来创建像删除按钮这样的东西,而不用使用 GET
请求。
一个例子
{{form_button(url_for('remove_entry', id=entry_id),
icon('remove') + ' Remove entry')}}