一分钟精通Flask-Bootstrap的使用

本文介绍如何通过Flask-Bootstrap扩展简化Bootstrap在Flask应用中的集成过程,包括安装、初始化及模板继承的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要想在程序中集成Bootstrap,显然要对模板做所有必要的改动。不过,更简单的方法是使用一个名为Flask-Bootstrap 的Flask 扩展,简化集成的过程。

安装:

Flask-Bootstrap 使用pip安装:

pip install flask_bootstrap

  Flask 扩展一般都在创建程序实例时初始化,下面是Flask_Bootstrap的初始化方法

加载:

from flask_bootstrap import Bootstrap

初始化:

方法一:

app = Flask(__name__)
Bootstrap(app)

方法二:

实例:

页面加入: { %extends "bootstrap/base.html" %}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %} 首页 {% endblock %}</title>

    {% block mycss %} {% endblock %}
</head>
<body>

<nav class="navbar navbar-inverse ">
    <div class="container">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
                    data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">Liu'BLOG</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="{{url_for('blog.index')}}">首页 <span class="sr-only">(current)</span></a></li>
                <li><a href="{{url_for('article.add')}}">发表博客</a></li>
                <li><a href="{{url_for('blog.uall')}}">显示用户</a></li>
                <li><a href="{{url_for('blog.test')}}">测试钩子函数</a></li>
            </ul>
            <form class="navbar-form navbar-left" action="{{url_for('blog.search')}}" method="post">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="输入用户名/手机号码" name="search">
                </div>
                <button type="submit" class="btn btn-default">搜索用户</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                {% if session['uname'] %}
                <li><a href="{{url_for('blog.udetial')}}">欢迎 {{session['uname']}}</a></li>
                <li><a href="{{url_for('blog.exit')}}">注销</a></li>
                {% else%}
                <li><a href="{{url_for('blog.login')}}">登录</a></li>
                <li><a href="{{ url_for('blog.register') }}">注册</a></li>
                {% endif %}
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>

{%extends "bootstrap/base.html"%}
{% block content %}  {% endblock %}

{% block myjs %}  {% endblock %}
</body>
</html>

 效果:

  Jinja2 中的extends 指令从Flask-Bootstrap 中导入bootstrap/base.html, 从而实现模板继承。Flask-Bootstrap 中的基模板提供了一个网页框架,引入了Bootstrap 中的所有CSS 和JavaScript 文件。基模板中定义了可在衍生模板中重定义的块。block 和endblock 指令定义的块中的内容可添加到基模板中。上面这个user.html 模板定义了3 个块,分别名为title、navbar 和content。这些块都是基模板提供的,可在衍生模板中重新定义。title 块的作用很明显,其中的内容会出现在渲染后的HTML 文档头部,放在<title> 标签中。navbar 和content 这两个块分别表示页面中的导航条和主体内容。在这个模板中,navbar 块使用Bootstrap 组件定义了一个简单的导航条。content 块中有个<div> 容器,其中包含一个页面头部。之前版本的模板中的欢迎信息,现在就放在这个页面头部。运行结果如下图:    

Flask-Bootstrap 的base.html 模板还定义了很多其他块,都可在衍生模板中使用,下表列出了所有可用的块:

 

块名  说明
doc整个html文档
html_attribshtml标签属性
html  html标签中的内容
headhead标签中的内容
titletitle标签中的内容
metas一组meta标签
styles层叠样式表定义
body_attribsbody标签的属性
bodybody标签中的内容
navbar用户定义的导航条
content用户定义的页面内容
scripts文档底部的JavaScript 声明

  上表中的很多块都是Flask-Bootstrap 自用的,如果直接重定义可能会导致一些问题。例如,Bootstrap 所需的文件在styles 和scripts 块中声明。如果程序需要向已经有内容的块中添加新内容,必须使用Jinja2 提供的super() 函数。例如,如果要在衍生模板中添加新的JavaScript 文件,需要这么定义scripts 块:

{% block scripts %}
{{ super() }}
<script type="text/javascript" src="my-script.js"></script>
{% endblock %}

关于settings配置文件:

BOOTSTRAP_USE_MINIFIED  = True  #  使用mini版的bootstrap文件
BOOTSTRAP_SERVE_LOCAL = False    #是否使用本地服务器来提供bootstrap文件
BOOTSTRAP_LOCAL_SUBDOMAIN   = None   #  关于blueprint的子域名传输?暂时没用到
BOOTSTRAP_CDN_FORCE_SSL  =  True   # 给CDN加速使用安全的https连接

 

### 如何使用 Flask-Bootstrap 进行 Web 开发 #### 初始化项目并安装依赖库 为了开始使用 Flask-Bootstrap 构建应用程序,首先需要创建一个新的 Flask 应用程序,并通过 pip 安装 `flask-bootstrap`。 ```bash pip install flask-bootstrap ``` 接着,在 Python 文件中初始化 FlaskBootstrap 实例: ```python from flask import Flask from flask_bootstrap import Bootstrap app = Flask(__name__) bootstrap = Bootstrap(app) ``` 这段代码设置了 Flask 应用实例以及关联的 Bootstrap 对象[^3]。 #### 创建基础模板 通常会有一个名为 `base.html` 的基本 HTML 模板文件位于 templates 文件夹下。这个文件包含了整个网站共享的内容布局和样式设置。下面是一个简单的例子: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> </head> <body> <div class="container"> {% block content %} <!-- 页面主体内容 --> {% endblock %} </div> <script src="{{ url_for('static', filename='js/bootstrap.min.js') }}"></script> </body> </html> ``` 此模板利用了 Jinja2 模板引擎中的 `{% %}` 结构来定义可替换部分;其中最常用的是 `content` 块,它允许子页面填充特定区域内的具体内容[^1]。 #### 使用内置组件构建视图 一旦有了上述的基础架构之后就可以着手于具体的网页设计了。比如要显示一个带有按钮的消息框可以这样做: ```html {% extends "base.html" %} {% block content %} <h1>Hello, world!</h1> <button type="button" class="btn btn-primary">Primary Button</button> <a href="#" class="btn btn-success">Success Link</a> {% endblock %} ``` 这里的 `<button>` 和 `<a>` 标签都运用到了来自 Twitter Bootstrap CSS 类的选择器,从而实现了美观而一致的设计效果[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络毒刘

授人玫瑰,手有余香。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值