首页 > 代码库 > FlaskWebDevelopment - Flask模板2 - Flask-Bootstrap插件
FlaskWebDevelopment - Flask模板2 - Flask-Bootstrap插件
这部分还是属于模板,讲Flask里嵌入Bootstrap,利用Flask-Bootstrap插件。这个插件存在的意义就是简化这个嵌入的操作过程,当然不用也可以。
通过Flask-Bootstrap集成Bootstrap
Bootstrap的介绍就不翻了。
Bootstrap作为一个client端的框架,他最终存在于HTML文件中,做Flask应用开发的话,应该把它放入模板中。
Flask-Bootstrap插件可以简化这个集成操作,用pip安装:
$ pip install flask-bootstrap
Flask插件一般与Flask app实例一同初始化,如:
`hello.py` from flask.ext.bootstrap import Bootstrap # ... bootstrap = Bootstrap(app)
还是之前的hello.py
,又增加了Flask-Bootstrap。类似于Flask-Script,插件由flask.ext控件引入,通过向构造器传入app
实例来初始化并得到这个插件的实例。
Flask-Bootstrap初始化完成后,就得到一个包含了所有Bootstrap需要文件的基础模板。这个模板利用了Jinja2的继承机制,应用只需要继承这个模板,就得到了已经集成了Bootstrap的新模板。修改之前的user.html:
user.html
{% extends "bootstrap/base.html" %} {% block title %}Flasky{% endblock %} {% block navbar %} <div class="navbar navbar-inverse" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <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="http://www.mamicode.com/">Flasky</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="http://www.mamicode.com/">Home</a></li> </ul> </div> </div> </div> {% endblock %} {% block content %} <div class="container"> <div class="page-header"> <h1>Hello, {{ name }}!</h1> </div> </div> {% endblock %}
上面的模板,继承了由Flask-Bootstrap提供的bootstrap/base.html
基础模板。这个基础模板包含了一个网页的骨架,同时已经包含了Bootstrap的CSS和JS文件。
基础模板中定义的区块,可以被继承的模板里定义的区块覆盖。在block与endblock之间的内容会被填充到基础模板中。
新的user.html
里有title,navbar和content三个区块,在navbar里,利用Bootstrap组件定义了简单的导航条。
注:
- 想找这个基础模板的,到python的包安装目录去找,它保存在FLask-Bootstrap的包的:
\site-packages\flask_bootstrap\templates\bootstrap
内。 - 当前代码在3b tag下
- Bootstrap官方文档里有很多改改就能用的实例。
新的网页效果如图:
Flask-Bootstrap的基础模板里提供多种区块:
名称 描述 doc 全部HTML文档 html_attribs <html> tag 内部的属性 html <html> tag 中间的内容 head <head> tag 中间的内容 title <title> tag 中间的内容 metas <meta> tags的一个列表 styles CSS body_attribs <body> tag 内部的属性 body <body> tag 中间的内容 navbar 自定义导航栏 content 自定义页面内容 scripts 文件底部的JavaScript声明
上表中的一些区块Flask-Script本身也有使用,直接覆盖可能导致问题,比如styles
和scripts
区块里就声明了一些Bootstrap文件。建议直接看看基础模板的内容,有个了解。如果只是需要增加自己的内容,那么可以使用Jinja2提供的super()
方法,可以保留原有内容。例如:
{% block scripts %} {{ super() }} <script type="text/javascript" src="http://www.mamicode.com/my-script.js"></script> {% endblock %}
注:模板这可能还需要1~2个,才能搞定。
FlaskWebDevelopment - Flask模板2 - Flask-Bootstrap插件