一分钟精通Flask-Bootstrap的使用

要想在程序中集成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连接

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux生产环境下安装anaconda总结

前言&#xff1a; 工作中&#xff0c;常常要在新的linux生产服务器中安装自己的集成python环境&#xff0c;这种情况下有一点需要注意&#xff1a;不能覆盖生产服务器中的python环境&#xff08;也就是自己的python环境要和系统的python环境分开&#xff09;。一般情况下系统自…

FSF 称 DRM 被用于锁定、控制和监视用户

自由软件基金会正在督促美国政府废除DMCA中保护DRM的反规避条款。DMCA的1201条款禁止绕过DRM保护的内容和设备。 自由软件基金会的Donald Robertson在致函美国版权办公室的信&#xff08;PDF&#xff09;中指出&#xff0c;技术保护措施和数字限制管理&#xff08;即DRM&#x…

改数据库表结构类型两种方法

alter table user change password password varchar(128) not null; alter table user modify column password varchar(128) not null;

申请评分卡(A卡)的开发过程(1)

前言&#xff1a; 本篇文章上接《申请评分卡简介》&#xff0c;有需要的童鞋可以参考下&#xff1a;https://blog.csdn.net/qq_16633405/article/details/107744921 下面介绍下A卡的开发步骤。 开发过程 1、评分卡模型开发步骤&#xff1a; 1、立项&#xff1a;场景&#…

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-front

解决&#xff1a; E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend)&#xff0c;是否有其他进程正占用它&#xff1f; 方法&#xff1a; 重新启动虚拟机服务器 再在黑屏终端中重新尝试输入su…

聚类效果评估指标总结

前言 实际工作中经常会用到一些聚类算法对一些数据进行聚类处理&#xff0c;如何评估每次聚类效果的好坏&#xff1f;可选的方法有1、根据一些聚类效果的指标来评估&#xff1b;2、直接打点。今天就主要总结下这段时间了解的聚类效果评估指标。废话少说&#xff0c;直接上干货…

{%extends bootstrap/base.html%}的添加,使得其他block无法继承

仙说{%extends "bootstrap/base.html"%}用法&#xff1a; 在base.html中调用一次即可&#xff0c;并且 {%extends "bootstrap/base.html"%} 要放在 最后头&#xff01;&#xff01;最后头&#xff01;最后头&#xff01; base中不用再添加 {% block cont…

运用Nginx代理和UWSGI将Flask项目部署在Linux中 详细步骤

nginx: 安装可以参照的路径: http://nginx.org/en/linux_packages.html#Ubuntu 启动Nginx nginx [ -c configpath] 默认配置目录&#xff1a;/etc/nginx/nginx.conf 查看进程&#xff1a; ps -ef |grep nginx 控制Nginx nginx -s xxxstop 快速关闭quit …

机器学习算法之KNN

前言 KNN一般用于有监督的分类场景&#xff0c;除此之外&#xff0c;KNN在异常检测场景中也有应用&#xff0c;下面主要介绍下KNN在这两面的应用原理。 KNN做分类的原理 计算步骤如下&#xff1a; 1&#xff09;算距离&#xff1a;给定测试对象&#xff0c;计算它与训练集中…

Supermap 组合单值专题图与标签专题图演示样例

效果图例如以下&#xff1a;单值专题图并显示每一个区域的相关文字信息 代码&#xff1a; <!DOCTYPE> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>单值专题图</title>…

[剑指Offer] 25.复杂链表的复制

1 /*2 struct RandomListNode {3 int label;4 struct RandomListNode *next, *random;5 RandomListNode(int x) :6 label(x), next(NULL), random(NULL) {7 }8 };9 */ 10 class Solution 11 { 12 public: 13 //在旧链表中创建新链表&#xff0…

Flask项目中应用七牛云存储

七牛云存储&#xff1a; https://developer.qiniu.com/kodo/sdk/1242/python 点击注册开通七牛开发者帐号 如果已有账号&#xff0c;直接登录七牛开发者后台&#xff0c;点击这里查看 Access Key 和 Secret Key pip install qiniu q Auth(Access Key,Secret Key) b…

异常检测算法之IForest

前言 IForest即孤立森林&#xff0c;可以用于做异常检测。一句话总结IForest做异常检测的原理&#xff1a;异常点密度小&#xff0c;基于树模型容易被一下切割出来&#xff0c;正常值密度大&#xff0c;需要切割多次才能得到目标值。 原理 iForest算法得益于随机森林的思想&…

用c#编写爬虫在marinetraffic下载船仅仅图片

近期在做船仅仅识别方面的事情&#xff0c;须要大量的正样本来训练adaboost分类器。于是到marinetraffic这个站点上下载船仅仅图片。写个爬虫来自己主动下载显然非常方便。 站点特点 在介绍爬虫之前首先了解一下marinetraffic这个站点的一些特点&#xff1a; 1. 会定期检測爬虫…

异常检测算法之LOF

前言&#xff1a; LOF&#xff1a;Local outlier factor&#xff0c;即局部异常因子。LOF主要是通过比较每个点p和其邻域点的密度来判断该点是否为异常点&#xff0c;如果点p的密度越低&#xff0c;越可能被认定是异常点。至于密度&#xff0c;是通过点之间的距离来计算的&…

Android属性动画进阶用法

2019独角兽企业重金招聘Python工程师标准>>> 在上周二文章中介绍补间动画缺点的时候有提到过&#xff0c;补间动画是只能对View对象进行动画操作的。而属性动画就不再受这个限制&#xff0c;它可以对任意对象进行动画操作。那么大家应该还记得之前我举的一个例子&am…

5.3linux下C语言socket网络编程简例

原创文章&#xff0c;转载请注明转载字样和出处&#xff0c;谢谢&#xff01; 这里给出在Linux下的简单socket网络编程的实例&#xff0c;使用tcp协议进行通信&#xff0c;服务端进行监听&#xff0c;在收到客户端的连接后&#xff0c;发送数据给客户端&#xff1b;客户端在接受…

异常检测算法之HBOS

前言 HBOS&#xff08;Histogram-based Outlier Score&#xff09;核心思想&#xff1a;将样本按照特征分成多个区间&#xff0c;样本数少的区间是异常值的概率大。 原理 该方法为每一个样本进行异常评分&#xff0c;评分越高越可能是异常点。评分模型为&#xff1a; 假设样…

字典和json 的区别 和转换

前言&#xff1a;字典和json非常像。接下来比较一下两者的异同 先看一下字典的写法&#xff1a; a {a:1,b:2,c:3} 再看一下json的写法&#xff1a; {"studentInfo":{"id":123456,"stu_name":"Dorra"} } 从形式上看&#xff0c;都是…

easyui动态显示和隐藏表头

为什么80%的码农都做不了架构师&#xff1f;>>> var _bt{date:日期,subtime:填写时间,xz:小组,uname:操作人,qdbh:渠道编号,mt:媒体,zh:账户,sjd:时间段,tfwz:投放位置,tfh:投放号,td:团队,sjje:实际金额,jxs:进线数,cb:成本,yxzyjx:有效资源进线,yxzyl:有效资源率…